diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a1c2a23 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* diff --git a/DB/km.sql b/DB/km.sql new file mode 100644 index 0000000..9a72441 --- /dev/null +++ b/DB/km.sql @@ -0,0 +1,1516 @@ +CREATE database if NOT EXISTS `km` default character set utf8mb4 collate utf8mb4_unicode_ci; +use `km`; + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for km_doc +-- ---------------------------- +DROP TABLE IF EXISTS `km_doc`; +CREATE TABLE `km_doc` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `file_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `preview_file_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `original_preview_file_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `file_size` int(0) NULL DEFAULT NULL, + `name` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `serial_number` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `file_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `status` smallint(0) NULL DEFAULT NULL, + `category` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `source` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `keywords` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `fti_flag` smallint(0) NULL DEFAULT NULL, + `convert_flag` smallint(0) NULL DEFAULT NULL, + `release_flag` smallint(0) NULL DEFAULT NULL, + `downloads` bigint(0) NULL DEFAULT NULL, + `views` bigint(0) NULL DEFAULT NULL, + `last_update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `last_update_time` datetime(0) NULL DEFAULT NULL, + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL, + `process_msg` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `index_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `file_no` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `dep_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `pub_time_txt` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `public_flag` smallint(0) NULL DEFAULT NULL, + `download_flag` smallint(0) NULL DEFAULT NULL, + `effect_time` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `remark` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `pub_time` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `public_remark` smallint(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_doc_business_type +-- ---------------------------- +DROP TABLE IF EXISTS `km_doc_business_type`; +CREATE TABLE `km_doc_business_type` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `doc_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `business_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_doc_favourite +-- ---------------------------- +DROP TABLE IF EXISTS `km_doc_favourite`; +CREATE TABLE `km_doc_favourite` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `doc_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `add_time` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_doc_topic_type +-- ---------------------------- +DROP TABLE IF EXISTS `km_doc_topic_type`; +CREATE TABLE `km_doc_topic_type` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `doc_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `topic_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_doc_version +-- ---------------------------- +DROP TABLE IF EXISTS `km_doc_version`; +CREATE TABLE `km_doc_version` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `doc_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `version` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_doc_visit_record +-- ---------------------------- +DROP TABLE IF EXISTS `km_doc_visit_record`; +CREATE TABLE `km_doc_visit_record` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `doc_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `visit_type` decimal(6, 0) NULL DEFAULT NULL COMMENT '1:上传 2:预览 3:下载 4:删除', + `keywords` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `keywords_max` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `source_ip` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_file +-- ---------------------------- +DROP TABLE IF EXISTS `km_file`; +CREATE TABLE `km_file` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `sha256` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `physical_path` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `url` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `original_name` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_search_record +-- ---------------------------- +DROP TABLE IF EXISTS `km_search_record`; +CREATE TABLE `km_search_record` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'id', + `keywords` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'keywords', + `title` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `topic_codes` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `keywords_max` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `source_ip` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'sourceIp', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'createBy', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT 'createTime' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for km_sys_config +-- ---------------------------- +DROP TABLE IF EXISTS `km_sys_config`; +CREATE TABLE `km_sys_config` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `item_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `item_value` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `item_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of km_sys_config +-- ---------------------------- +INSERT INTO `km_sys_config` VALUES ('12', 'MaxContentSearchLength', '102400', '全文检索最大参数最大长度(内容查重,如果时间过长或报错,请调小参数值)', NULL); +INSERT INTO `km_sys_config` VALUES ('12', 'DuplicateCheckHitRate', '50%', '文档标题与内容查重关键字匹配比例(高于此比例为疑似重复)', NULL); +INSERT INTO `km_sys_config` VALUES ('1', 'supportFileTypes', 'doc,xls,pdf,ppt,txt,xlsx,docx,pptx,zip,rar,jpg,jpeg,bmp,png,gif', '全部支持的文件格式后缀,如果不限制上传格式则设置为空', NULL); +INSERT INTO `km_sys_config` VALUES ('4', 'downloadLimitConfig', '102', '24小时下载次数限制', NULL); +INSERT INTO `km_sys_config` VALUES ('5', 'TitleSearchBoostConfig', '1', '检索权重:标题,以1位基数', NULL); +INSERT INTO `km_sys_config` VALUES ('6', 'KeywordSearchBoostConfig', '1', '检索权重:关键字,以1位基数', NULL); +INSERT INTO `km_sys_config` VALUES ('7', 'ContentSearchBoostConfig', '1', '检索权重:内容,以1位基数', NULL); +INSERT INTO `km_sys_config` VALUES ('8', 'searchLimitConfig', '10', '10秒搜索次数限制', NULL); +INSERT INTO `km_sys_config` VALUES ('9', 'viewLimitConfig', '10', '10秒预览次数限制', NULL); +INSERT INTO `km_sys_config` VALUES ('2', 'IndexFileTypes', 'doc,xls,pdf,ppt,txt,xlsx,docx,pptx,zip,rar', '解释并全文入库的文件格式', NULL); +INSERT INTO `km_sys_config` VALUES ('3', 'ConvertFileTypes', 'doc,xls,pdf,ppt,txt,xlsx,docx,pptx,jpg,jpeg,bmp,png,gif', '自动进行预览文件转换的文件格式', NULL); +INSERT INTO `km_sys_config` VALUES ('10', 'InnerRoleId', '9dcb6f3da512450db97043164d6894e6', '综管平台特定内部角色id,可检索全部文档', NULL); +INSERT INTO `km_sys_config` VALUES ('11', 'RecommendHotTopic', '0', '是否在首页推荐热门专题', NULL); + +-- ---------------------------- +-- Table structure for onl_cgreport_head +-- ---------------------------- +DROP TABLE IF EXISTS `onl_cgreport_head`; +CREATE TABLE `onl_cgreport_head` ( + `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '报表编码', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '报表名字', + `cgr_sql` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '报表SQL', + `return_val_field` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '返回值字段', + `return_txt_field` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '返回文本字段', + `return_type` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '返回类型,单选或多选', + `db_source` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '动态数据源', + `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '描述', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人id', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of onl_cgreport_head +-- ---------------------------- +INSERT INTO `onl_cgreport_head` VALUES ('1420565897964433409', 'doc_visit_record', '文档操作记录', 'SELECT kd.serial_number,kd.title,kdvr.visit_type,kdvr.create_by,kdvr.source_ip,kdvr.create_time FROM km_doc_visit_record kdvr\nJOIN km_doc kd ON kd.id=kdvr.doc_id \n ORDER BY create_time DESC\n', NULL, NULL, '1', NULL, NULL, '2021-12-17 14:52:04', 'ceshi', '2021-07-29 10:04:38', 'admin'); + +-- ---------------------------- +-- Table structure for onl_cgreport_item +-- ---------------------------- +DROP TABLE IF EXISTS `onl_cgreport_item`; +CREATE TABLE `onl_cgreport_item` ( + `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `cgrhead_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '报表ID', + `field_name` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字段名字', + `field_txt` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '字段文本', + `field_width` decimal(11, 0) NULL DEFAULT NULL, + `field_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字段类型', + `search_mode` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '查询模式', + `is_order` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否排序 0否,1是', + `is_search` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否查询 0否,1是', + `dict_code` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '字典CODE', + `field_href` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字段跳转URL', + `is_show` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否显示 0否,1显示', + `order_num` decimal(11, 0) NULL DEFAULT NULL COMMENT '排序', + `replace_val` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '取值表达式', + `is_total` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否合计 0否,1是(仅对数值有效)', + `group_title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分组标题', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of onl_cgreport_item +-- ---------------------------- +INSERT INTO `onl_cgreport_item` VALUES ('1420565899138838529', '1420565897964433409', 'title', '文档标题', NULL, 'String', NULL, 0, 1, NULL, NULL, 1, 1, NULL, NULL, NULL, 'admin', '2021-07-29 10:04:38', NULL, NULL); +INSERT INTO `onl_cgreport_item` VALUES ('1420565899155615745', '1420565897964433409', 'serial_number', '文档序列号', NULL, 'String', 'single', 0, 1, NULL, NULL, 1, 2, NULL, NULL, NULL, 'admin', '2021-07-29 10:04:38', NULL, NULL); +INSERT INTO `onl_cgreport_item` VALUES ('1420565899168198658', '1420565897964433409', 'visit_type', '操作类型', NULL, 'Integer', 'single', 0, 1, 'dict_doc_visit_type', NULL, 1, 3, NULL, NULL, NULL, 'admin', '2021-07-29 10:04:38', NULL, NULL); +INSERT INTO `onl_cgreport_item` VALUES ('1420565899168198659', '1420565897964433409', 'create_by', '操作人', NULL, 'String', 'single', 0, 1, '', NULL, 1, 4, NULL, NULL, NULL, 'admin', '2021-07-29 10:04:38', NULL, NULL); +INSERT INTO `onl_cgreport_item` VALUES ('1420565899172392962', '1420565897964433409', 'source_ip', 'IP地址', NULL, 'String', NULL, 0, 0, NULL, NULL, 1, 5, NULL, NULL, NULL, 'admin', '2021-07-29 10:04:38', NULL, NULL); +INSERT INTO `onl_cgreport_item` VALUES ('1420565899189170177', '1420565897964433409', 'create_time', '操作时间', NULL, 'Date', 'group', 0, 1, NULL, NULL, 1, 6, NULL, NULL, NULL, 'admin', '2021-07-29 10:04:38', NULL, NULL); + +-- ---------------------------- +-- Table structure for onl_cgreport_param +-- ---------------------------- +DROP TABLE IF EXISTS `onl_cgreport_param`; +CREATE TABLE `onl_cgreport_param` ( + `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `cgrhead_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '动态报表ID', + `param_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '参数字段', + `param_txt` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数文本', + `param_value` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数默认值', + `order_num` decimal(11, 0) NULL DEFAULT NULL COMMENT '排序', + `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人登录名称', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人登录名称', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for oss_file +-- ---------------------------- +DROP TABLE IF EXISTS `oss_file`; +CREATE TABLE `oss_file` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id', + `file_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称', + `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件地址', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人登录名称', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人登录名称', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'Oss File' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_blob_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_blob_triggers`; +CREATE TABLE `qrtz_blob_triggers` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `blob_data` longblob NULL, + PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, + CONSTRAINT `qrtz_blob_trig_to_trig_fk` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_calendars +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_calendars`; +CREATE TABLE `qrtz_calendars` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `calendar_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `calendar` longblob NOT NULL, + PRIMARY KEY (`sched_name`, `calendar_name`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_cron_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_cron_triggers`; +CREATE TABLE `qrtz_cron_triggers` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `cron_expression` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `time_zone_id` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, + CONSTRAINT `qrtz_cron_trig_to_trig_fk` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_fired_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_fired_triggers`; +CREATE TABLE `qrtz_fired_triggers` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `entry_id` varchar(95) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `instance_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `fired_time` decimal(13, 0) NOT NULL, + `sched_time` decimal(13, 0) NOT NULL, + `priority` decimal(13, 0) NOT NULL, + `state` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `job_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `job_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `is_nonconcurrent` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `requests_recovery` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`sched_name`, `entry_id`) USING BTREE, + INDEX `idx_qrtz_ft_inst_job_req_rcvry`(`instance_name`, `sched_name`, `requests_recovery`) USING BTREE, + INDEX `idx_qrtz_ft_jg`(`job_group`, `sched_name`) USING BTREE, + INDEX `idx_qrtz_ft_j_g`(`job_name`, `sched_name`, `job_group`) USING BTREE, + INDEX `idx_qrtz_ft_tg`(`sched_name`, `trigger_group`) USING BTREE, + INDEX `idx_qrtz_ft_trig_inst_name`(`sched_name`, `instance_name`) USING BTREE, + INDEX `idx_qrtz_ft_t_g`(`sched_name`, `trigger_name`, `trigger_group`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_job_details +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_job_details`; +CREATE TABLE `qrtz_job_details` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `job_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `job_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `description` varchar(250) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `job_class_name` varchar(250) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `is_durable` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `is_nonconcurrent` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `is_update_data` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `requests_recovery` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `job_data` longblob NULL, + PRIMARY KEY (`sched_name`, `job_name`, `job_group`) USING BTREE, + INDEX `idx_qrtz_j_grp`(`sched_name`, `job_group`) USING BTREE, + INDEX `idx_qrtz_j_req_recovery`(`sched_name`, `requests_recovery`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_locks +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_locks`; +CREATE TABLE `qrtz_locks` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `lock_name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + PRIMARY KEY (`sched_name`, `lock_name`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of qrtz_locks +-- ---------------------------- +INSERT INTO `qrtz_locks` VALUES ('MyScheduler', 'STATE_ACCESS'); +INSERT INTO `qrtz_locks` VALUES ('MyScheduler', 'TRIGGER_ACCESS'); + +-- ---------------------------- +-- Table structure for qrtz_paused_trigger_grps +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; +CREATE TABLE `qrtz_paused_trigger_grps` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + PRIMARY KEY (`sched_name`, `trigger_group`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_scheduler_state +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_scheduler_state`; +CREATE TABLE `qrtz_scheduler_state` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `instance_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `last_checkin_time` decimal(13, 0) NOT NULL, + `checkin_interval` decimal(13, 0) NOT NULL, + PRIMARY KEY (`sched_name`, `instance_name`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of qrtz_scheduler_state +-- ---------------------------- +INSERT INTO `qrtz_scheduler_state` VALUES ('MyScheduler', '172_16_0_21646914039944', 1647951194622, 10000); + +-- ---------------------------- +-- Table structure for qrtz_simple_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simple_triggers`; +CREATE TABLE `qrtz_simple_triggers` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `repeat_count` decimal(7, 0) NOT NULL, + `repeat_interval` decimal(12, 0) NOT NULL, + `times_triggered` decimal(10, 0) NOT NULL, + PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, + CONSTRAINT `qrtz_simple_trig_to_trig_fk` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_simprop_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simprop_triggers`; +CREATE TABLE `qrtz_simprop_triggers` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `str_prop_1` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `str_prop_2` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `str_prop_3` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `int_prop_1` decimal(10, 0) NULL DEFAULT NULL, + `int_prop_2` decimal(10, 0) NULL DEFAULT NULL, + `long_prop_1` decimal(13, 0) NULL DEFAULT NULL, + `long_prop_2` decimal(13, 0) NULL DEFAULT NULL, + `dec_prop_1` decimal(13, 4) NULL DEFAULT NULL, + `dec_prop_2` decimal(13, 4) NULL DEFAULT NULL, + `bool_prop_1` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `bool_prop_2` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, + CONSTRAINT `qrtz_simprop_trig_to_trig_fk` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_triggers`; +CREATE TABLE `qrtz_triggers` ( + `sched_name` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `job_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `job_group` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `description` varchar(250) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `next_fire_time` decimal(13, 0) NULL DEFAULT NULL, + `prev_fire_time` decimal(13, 0) NULL DEFAULT NULL, + `priority` decimal(13, 0) NULL DEFAULT NULL, + `trigger_state` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `trigger_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `start_time` decimal(13, 0) NOT NULL, + `end_time` decimal(13, 0) NULL DEFAULT NULL, + `calendar_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `misfire_instr` decimal(2, 0) NULL DEFAULT NULL, + `job_data` longblob NULL, + PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, + INDEX `idx_qrtz_t_c`(`sched_name`, `calendar_name`) USING BTREE, + INDEX `idx_qrtz_t_g`(`sched_name`, `trigger_group`) USING BTREE, + INDEX `idx_qrtz_t_j`(`job_group`, `job_name`, `sched_name`) USING BTREE, + INDEX `idx_qrtz_t_jg`(`sched_name`, `job_group`) USING BTREE, + INDEX `idx_qrtz_t_next_fire_time`(`sched_name`, `next_fire_time`) USING BTREE, + INDEX `idx_qrtz_t_nft_misfire`(`sched_name`, `misfire_instr`, `next_fire_time`) USING BTREE, + INDEX `idx_qrtz_t_nft_st`(`next_fire_time`, `sched_name`, `trigger_state`) USING BTREE, + INDEX `idx_qrtz_t_nft_st_misfire`(`sched_name`, `misfire_instr`, `next_fire_time`, `trigger_state`) USING BTREE, + INDEX `idx_qrtz_t_nft_st_misfire_grp`(`sched_name`, `misfire_instr`, `trigger_state`, `trigger_group`, `next_fire_time`) USING BTREE, + INDEX `idx_qrtz_t_n_g_state`(`trigger_group`, `sched_name`, `trigger_state`) USING BTREE, + INDEX `idx_qrtz_t_n_state`(`sched_name`, `trigger_group`, `trigger_name`, `trigger_state`) USING BTREE, + INDEX `idx_qrtz_t_state`(`sched_name`, `trigger_state`) USING BTREE, + INDEX `qrtz_trigger_to_jobs_fk`(`sched_name`, `job_name`, `job_group`) USING BTREE, + CONSTRAINT `qrtz_trigger_to_jobs_fk` FOREIGN KEY (`sched_name`, `job_name`, `job_group`) REFERENCES `qrtz_job_details` (`sched_name`, `job_name`, `job_group`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_announcement +-- ---------------------------- +DROP TABLE IF EXISTS `sys_announcement`; +CREATE TABLE `sys_announcement` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `titile` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题', + `msg_content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容', + `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', + `sender` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发布人', + `priority` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '优先级(L低,M中,H高)', + `msg_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '消息类型1:通知公告2:系统消息', + `msg_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通告对象类型(USER:指定用户,ALL:全体用户)', + `send_status` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发布状态(0未发布,1已发布,2已撤销)', + `send_time` datetime(0) NULL DEFAULT NULL COMMENT '发布时间', + `cancel_time` datetime(0) NULL DEFAULT NULL COMMENT '撤销时间', + `del_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '删除状态(0,正常,1已删除)', + `bus_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '业务类型(email:邮件 bpm:流程)', + `bus_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '业务id', + `open_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '打开方式(组件:component 路由:url)', + `open_page` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件/路由 地址', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `user_ids` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '指定用户', + `msg_abstract` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '摘要', + `dt_task_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '钉钉task_id,用于撤回消息' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统通告表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_announcement_send +-- ---------------------------- +DROP TABLE IF EXISTS `sys_announcement_send`; +CREATE TABLE `sys_announcement_send` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `annt_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通告ID', + `user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id', + `read_flag` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '阅读状态(0未读,1已读)', + `read_time` datetime(0) NULL DEFAULT NULL COMMENT '阅读时间', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户通告阅读标记表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_category +-- ---------------------------- +DROP TABLE IF EXISTS `sys_category`; +CREATE TABLE `sys_category` ( + `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `pid` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父级节点', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型名称', + `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型编码', + `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期', + `sys_org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属部门', + `has_child` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否有子节点', + `sort_order` int(0) NULL DEFAULT NULL, + `recommend` tinyint(1) NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_category +-- ---------------------------- +INSERT INTO `sys_category` VALUES ('1450287793728155650', '1415239215563579394', '信息化项目', 'B04A02', 'ceshi', '2021-10-19 10:28:49', 'ceshi', '2021-10-19 10:28:58', 'A01', '1', 1, NULL); +INSERT INTO `sys_category` VALUES ('1450287947566837762', '1450287793728155650', '前置性审核', 'B04A02A05', 'ceshi', '2021-10-19 10:29:26', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450287992101957633', '1450287793728155650', '验收备案', 'B04A02A06', 'ceshi', '2021-10-19 10:29:37', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450288184205275137', '1450288104739991553', '数据', 'B04A03A02', 'ceshi', '2021-10-19 10:30:22', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450288234289459202', '1450288104739991553', '服务', 'B04A03A04', 'ceshi', '2021-10-19 10:30:34', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450288263007858689', '1450288104739991553', '系统', 'B04A03A05', 'ceshi', '2021-10-19 10:30:41', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450287865912127490', '1450287793728155650', '立项审批', 'B04A02A02', 'ceshi', '2021-10-19 10:29:06', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1415239215563579394', '0', '教育信息化', 'B04', 'admin', '2021-07-14 04:18:18', 'ceshi', '2021-11-24 18:24:43', 'A01', '1', 1, 1); +INSERT INTO `sys_category` VALUES ('1450287893921689602', '1450287793728155650', '项目采购', 'B04A02A03', 'ceshi', '2021-10-19 10:29:13', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1448923409156202498', '1448923264612098049', '年度计划', 'B06A04', 'ceshi', '2021-10-15 16:07:15', 'ceshi', '2021-11-15 11:32:50', 'A01', NULL, 1, 0); +INSERT INTO `sys_category` VALUES ('1448923583488253953', '0', '教育管理', 'B07', 'ceshi', '2021-10-15 16:07:56', 'ceshi', '2021-11-23 14:00:03', 'A01', '0', 4, 0); +INSERT INTO `sys_category` VALUES ('1448923935583297538', '0', '教育理论', 'B10', 'ceshi', '2021-10-15 16:09:20', 'ceshi', '2021-11-23 14:00:10', 'A01', '0', 5, 1); +INSERT INTO `sys_category` VALUES ('1448923843216334849', '0', '素质教育', 'B08', 'ceshi', '2021-10-15 16:08:58', 'ceshi', '2021-11-23 14:00:36', 'A01', NULL, 7, 0); +INSERT INTO `sys_category` VALUES ('1448923896492384258', '0', '家校互动', 'B09', 'ceshi', '2021-10-15 16:09:11', 'ceshi', '2021-11-23 14:00:46', 'A01', NULL, 8, 0); +INSERT INTO `sys_category` VALUES ('1448924019523903490', '0', '教育实践', 'B11', 'ceshi', '2021-10-15 16:09:40', 'ceshi', '2021-11-23 14:00:20', 'A01', NULL, 6, NULL); +INSERT INTO `sys_category` VALUES ('1448924056215674881', '0', '学术研讨', 'B12', 'ceshi', '2021-10-15 16:09:49', 'ceshi', '2021-11-23 14:00:56', 'A01', NULL, 9, 0); +INSERT INTO `sys_category` VALUES ('1448924103653253122', '0', '样板课程', 'B13', 'ceshi', '2021-10-15 16:10:00', 'ceshi', '2021-11-23 14:02:40', 'A01', NULL, 15, NULL); +INSERT INTO `sys_category` VALUES ('1448924139699101697', '0', '体育教育', 'B14', 'ceshi', '2021-10-15 16:10:09', 'ceshi', '2021-11-23 14:02:01', 'A01', NULL, 11, 0); +INSERT INTO `sys_category` VALUES ('1448924177934376962', '0', '工作总结', 'B15', 'ceshi', '2021-10-15 16:10:18', 'ceshi', '2021-11-23 14:02:09', 'A01', NULL, 12, NULL); +INSERT INTO `sys_category` VALUES ('1448924211119710210', '0', '备课材料', 'B16', 'ceshi', '2021-10-15 16:10:26', 'ceshi', '2021-11-23 14:02:15', 'A01', NULL, 13, NULL); +INSERT INTO `sys_category` VALUES ('1448924255076016129', '0', '工作汇报', 'B17', 'ceshi', '2021-10-15 16:10:36', 'ceshi', '2021-11-23 14:02:24', 'A01', NULL, 14, NULL); +INSERT INTO `sys_category` VALUES ('1448924309627133953', '0', '社会反馈', 'B18', 'ceshi', '2021-10-15 16:10:49', 'ceshi', '2021-12-28 11:09:43', 'A01', '0', 10, 0); +INSERT INTO `sys_category` VALUES ('1448924350068613122', '0', '德智体发展', 'B19', 'ceshi', '2021-10-15 16:10:59', 'ceshi', '2021-11-23 14:03:04', 'A01', NULL, 16, NULL); +INSERT INTO `sys_category` VALUES ('1448924381949517826', '0', '国防教育', 'B20', 'ceshi', '2021-10-15 16:11:07', 'ceshi', '2021-11-23 14:03:17', 'A01', NULL, 17, NULL); +INSERT INTO `sys_category` VALUES ('1448924413280968705', '0', '人事政策', 'B21', 'ceshi', '2021-10-15 16:11:14', 'ceshi', '2021-11-23 14:03:32', 'A01', NULL, 18, NULL); +INSERT INTO `sys_category` VALUES ('1448924439432454145', '0', '其他', 'B22', 'ceshi', '2021-10-15 16:11:20', 'ceshi', '2021-10-21 16:46:11', 'A01', NULL, 19, NULL); +INSERT INTO `sys_category` VALUES ('1450287922069663745', '1450287793728155650', '云资源管理', 'B04A02A04', 'ceshi', '2021-10-19 10:29:20', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450287830122131457', '1450287793728155650', '预算编制', 'B04A02A01', 'ceshi', '2021-10-19 10:28:58', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450288104739991553', '1415239215563579394', '信息化框架', 'B04A03', 'ceshi', '2021-10-19 10:30:03', 'ceshi', '2021-10-19 10:30:10', 'A01', '1', 1, NULL); +INSERT INTO `sys_category` VALUES ('1450288134951563265', '1450288104739991553', '软硬件环境', 'B04A03A01', 'ceshi', '2021-10-19 10:30:11', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1450288212390998018', '1450288104739991553', '平台', 'B04A03A03', 'ceshi', '2021-10-19 10:30:29', NULL, NULL, 'A01', NULL, 1, NULL); +INSERT INTO `sys_category` VALUES ('1448919819863777282', '0', '教育研究', 'B05', 'ceshi', '2021-10-15 15:52:59', 'ceshi', '2021-11-24 18:24:39', 'A01', '0', 2, 1); +INSERT INTO `sys_category` VALUES ('1448923264612098049', '0', '经验交流', 'B06', 'ceshi', '2021-10-15 16:06:40', 'ceshi', '2021-12-28 11:17:28', 'A01', '1', 3, NULL); + +-- ---------------------------- +-- Table structure for sys_check_rule +-- ---------------------------- +DROP TABLE IF EXISTS `sys_check_rule`; +CREATE TABLE `sys_check_rule` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id', + `rule_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则名称', + `rule_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则Code', + `rule_json` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '规则JSON', + `rule_description` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则描述', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + UNIQUE INDEX `uk_scr_rule_code`(`rule_code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_check_rule +-- ---------------------------- +INSERT INTO `sys_check_rule` VALUES ('1224980593992388610', '通用编码规则', 'common', '[{\"digits\":\"1\",\"pattern\":\"^[a-z|A-Z]$\",\"message\":\"第一位只能是字母\"},{\"digits\":\"*\",\"pattern\":\"^[0-9|a-z|A-Z|_]{0,}$\",\"message\":\"只能填写数字、大小写字母、下划线\"},{\"digits\":\"*\",\"pattern\":\"^.{3,}$\",\"message\":\"最少输入3位数\"},{\"digits\":\"*\",\"pattern\":\"^.{3,12}$\",\"message\":\"最多输入12位数\"}]', '规则:1、首位只能是字母;2、只能填写数字、大小写字母、下划线;3、最少3位数,最多12位数。', 'admin', '2020-02-07 11:25:48', 'admin', '2020-02-05 16:58:27'); +INSERT INTO `sys_check_rule` VALUES ('1225001845524004866', '负责的功能测试', 'test', '[{\"digits\":\"*\",\"pattern\":\"^.{3,12}$\",\"message\":\"只能输入3-12位字符\"},{\"digits\":\"3\",\"pattern\":\"^\\\\d{3}$\",\"message\":\"前3位必须是数字\"},{\"digits\":\"*\",\"pattern\":\"^[^pP]*$\",\"message\":\"不能输入P\"},{\"digits\":\"4\",\"pattern\":\"^@{4}$\",\"message\":\"第4-7位必须都为 @\"},{\"digits\":\"2\",\"pattern\":\"^#=$\",\"message\":\"第8-9位必须是 #=\"},{\"digits\":\"1\",\"pattern\":\"^O$\",\"message\":\"第10位必须为大写的O\"},{\"digits\":\"*\",\"pattern\":\"^.*。$\",\"message\":\"必须以。结尾\"}]', '包含长度校验、特殊字符校验等', 'admin', '2020-02-07 11:57:31', 'admin', '2020-02-05 18:22:54'); + +-- ---------------------------- +-- Table structure for sys_data_log +-- ---------------------------- +DROP TABLE IF EXISTS `sys_data_log`; +CREATE TABLE `sys_data_log` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人登录名称', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人登录名称', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期', + `data_table` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表名', + `data_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据ID', + `data_content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '数据内容', + `data_version` decimal(11, 0) NULL DEFAULT NULL COMMENT '版本号', + INDEX `idx_sdl_data_table_id`(`data_table`, `data_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_data_source +-- ---------------------------- +DROP TABLE IF EXISTS `sys_data_source`; +CREATE TABLE `sys_data_source` ( + `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据源编码', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据源名称', + `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `db_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据库类型', + `db_driver` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '驱动类', + `db_url` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '数据源地址', + `db_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据库名称', + `db_username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名', + `db_password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', + `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期', + `sys_org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属部门', + UNIQUE INDEX `uk_sdc_rule_code`(`code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_data_source +-- ---------------------------- +INSERT INTO `sys_data_source` VALUES ('1209779538310004737', 'local_mysql', 'MySQL5.7', '本地数据库MySQL5.7', '1', 'com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false', 'jeecg-boot', 'root', 'f5b6775e8d1749483f2320627de0e706', 'admin', '2019-12-25 18:14:53', 'admin', '2020-07-10 16:54:42', 'A01'); + +-- ---------------------------- +-- Table structure for sys_depart +-- ---------------------------- +DROP TABLE IF EXISTS `sys_depart`; +CREATE TABLE `sys_depart` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'ID', + `parent_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父机构ID', + `depart_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构/部门名称', + `depart_name_en` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '英文名', + `depart_name_abbr` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩写', + `depart_order` decimal(11, 0) NULL DEFAULT NULL COMMENT '排序', + `description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '描述', + `org_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构类别 1公司,2组织机构,2岗位', + `org_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '机构类型 1一级部门 2子部门', + `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构编码', + `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号', + `fax` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '传真', + `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址', + `memo` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '备注', + `status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态(1启用,0不启用)', + `del_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '删除状态(0,正常,1已删除)', + `qywx_identifier` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '对接企业微信的ID', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期', + UNIQUE INDEX `uniq_depart_org_code`(`org_code`) USING BTREE, + INDEX `idx_sd_depart_order`(`depart_order`) USING BTREE, + INDEX `idx_sd_parent_id`(`parent_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '组织机构表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_depart +-- ---------------------------- +INSERT INTO `sys_depart` VALUES ('f79b7d5a99b1442c876858a6961cb1fb', NULL, '默认部门', NULL, NULL, 0, NULL, '1', '1', 'A01', NULL, NULL, NULL, 'root', NULL, '0', NULL, 'ceshi', '2021-10-14 16:41:10', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('10c6c58575c24db297d838ec5c5f813d', NULL, '院长室', NULL, NULL, 0, NULL, '1', '1', 'A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-21 16:29:03', 'ceshi', '2021-10-21 16:29:15'); +INSERT INTO `sys_depart` VALUES ('a06041ec62674810983326ae552ced92', NULL, '副院长室', NULL, NULL, 0, NULL, '1', '1', 'A05', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-21 16:30:10', 'ceshi', '2021-10-28 10:55:17'); +INSERT INTO `sys_depart` VALUES ('e615307e7b684f15885ef6da29f6771d', 'a06041ec62674810983326ae552ced92', '史副院长', NULL, NULL, 1, NULL, '2', '2', 'A05A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:55:59', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('e0c42ad532b24b5fb76e44e9ecc03389', 'e615307e7b684f15885ef6da29f6771d', '人事财务室', NULL, NULL, 1, NULL, '2', '3', 'A05A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:58:15', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('2d9f7327dc2e4cf2b62d058a2c422534', 'e615307e7b684f15885ef6da29f6771d', '规划室', NULL, NULL, 2, NULL, '2', '3', 'A05A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:58:28', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('7aeb44fb58da45b484ab63b338acf738', 'e615307e7b684f15885ef6da29f6771d', '综合室', NULL, NULL, 3, NULL, '2', '3', 'A05A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:58:42', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('5eebbb70b6e24289933613b83c19c92b', 'a06041ec62674810983326ae552ced92', '陈副院长', NULL, NULL, 2, NULL, '2', '2', 'A05A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:56:20', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('2b098c54e19943fb8246e1c1162a63a2', '5eebbb70b6e24289933613b83c19c92b', '园区管理办公室', NULL, NULL, 1, NULL, '2', '3', 'A05A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:59:21', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('8ef9c3c7e11e4fe0b2d457803b85cd24', 'a06041ec62674810983326ae552ced92', '王副院长', NULL, NULL, 3, NULL, '2', '2', 'A05A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:56:29', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('d28c13eaaa1d4655ac4a1cd248d10158', '8ef9c3c7e11e4fe0b2d457803b85cd24', '调查室', NULL, NULL, 1, NULL, '2', '3', 'A05A03A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 11:00:47', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('02e9449426374c099d59d31ba9142520', '8ef9c3c7e11e4fe0b2d457803b85cd24', '海域监测室', NULL, NULL, 2, NULL, '2', '3', 'A05A03A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 11:01:11', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('3995768f0b814cb6ba09a12f833c70f5', '8ef9c3c7e11e4fe0b2d457803b85cd24', '预报运维室', NULL, NULL, 3, NULL, '2', '3', 'A05A03A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 11:01:29', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('93732fbb0ff14965a337fc27972c6f4d', 'a06041ec62674810983326ae552ced92', '徐副院长', NULL, NULL, 4, NULL, '2', '2', 'A05A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 10:56:40', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('35ccd833985b475a975e4b46eb4cf127', '93732fbb0ff14965a337fc27972c6f4d', '办公室', NULL, NULL, 1, NULL, '2', '3', 'A05A04A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 11:01:46', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('fb8b5f2a6d5d40508b9523434e44d536', '93732fbb0ff14965a337fc27972c6f4d', '政策研究室', NULL, NULL, 2, NULL, '2', '3', 'A05A04A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 11:01:57', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('c66be80d393b45af85ad2f1b307785e9', '93732fbb0ff14965a337fc27972c6f4d', '评价室', NULL, NULL, 3, NULL, '2', '3', 'A05A04A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'ceshi', '2021-10-28 11:02:12', NULL, NULL); +INSERT INTO `sys_depart` VALUES ('1fbd9362d9cd4f3b9781794ca1f509b8', '', 'test', NULL, NULL, 0, NULL, '1', '1', 'A06', NULL, NULL, NULL, NULL, NULL, '0', NULL, 'admin', '2022-01-06 15:00:32', NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_depart_permission +-- ---------------------------- +DROP TABLE IF EXISTS `sys_depart_permission`; +CREATE TABLE `sys_depart_permission` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `depart_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门id', + `permission_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限id', + `data_rule_ids` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '数据规则id' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门权限表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_depart_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_depart_role`; +CREATE TABLE `sys_depart_role` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `depart_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门id', + `role_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门角色名称', + `role_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门角色编码', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门角色表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_depart_role_permission +-- ---------------------------- +DROP TABLE IF EXISTS `sys_depart_role_permission`; +CREATE TABLE `sys_depart_role_permission` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `depart_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门id', + `role_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色id', + `permission_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限id', + `data_rule_ids` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '数据权限ids', + `operate_date` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', + `operate_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作ip', + INDEX `idx_sdrp_per_id`(`permission_id`) USING BTREE, + INDEX `idx_sdrp_role_id`(`role_id`) USING BTREE, + INDEX `idx_sdrp_role_per_id`(`permission_id`, `role_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门角色权限表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_depart_role_user +-- ---------------------------- +DROP TABLE IF EXISTS `sys_depart_role_user`; +CREATE TABLE `sys_depart_role_user` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id', + `user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id', + `drole_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色id' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门角色用户表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_dict +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dict`; +CREATE TABLE `sys_dict` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `dict_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典名称', + `dict_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典编码', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `del_flag` decimal(11, 0) NULL DEFAULT NULL COMMENT '删除状态', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `type` decimal(11, 0) NULL DEFAULT NULL COMMENT '字典类型0为string,1为number', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_dict +-- ---------------------------- +INSERT INTO `sys_dict` VALUES ('0b5d19e1fce4b2e6647e6b4a17760c14', '通告类型', 'msg_category', '消息类型1:通知公告2:系统消息', 0, 'admin', '2019-04-22 18:01:35', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1174509082208395266', '职务职级', 'position_rank', '职务表职级字典', 0, 'admin', '2019-09-19 10:22:41', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1174511106530525185', '机构类型', 'org_category', '机构类型 1公司,2部门 3岗位', 0, 'admin', '2019-09-19 10:30:43', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1178295274528845826', '表单权限策略', 'form_perms_type', NULL, 0, 'admin', '2019-09-29 21:07:39', 'admin', '2019-09-29 21:08:26', NULL); +INSERT INTO `sys_dict` VALUES ('1199517671259906049', '紧急程度', 'urgent_level', '日程计划紧急程度', 0, 'admin', '2019-11-27 10:37:53', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1199518099888414722', '日程计划类型', 'eoa_plan_type', NULL, 0, 'admin', '2019-11-27 10:39:36', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1199520177767587841', '分类栏目类型', 'eoa_cms_menu_type', NULL, 0, 'admin', '2019-11-27 10:47:51', 'admin', '2019-11-27 10:49:35', 0); +INSERT INTO `sys_dict` VALUES ('1199525215290306561', '日程计划状态', 'eoa_plan_status', NULL, 0, 'admin', '2019-11-27 11:07:52', 'admin', '2019-11-27 11:10:11', 0); +INSERT INTO `sys_dict` VALUES ('1209733563293962241', '数据库类型', 'database_type', NULL, 0, 'admin', '2019-12-25 15:12:12', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1232913193820581889', 'Online表单业务分类', 'ol_form_biz_type', NULL, 0, 'admin', '2020-02-27 14:19:46', 'admin', '2020-02-27 14:20:23', 0); +INSERT INTO `sys_dict` VALUES ('1250687930947620866', '定时任务状态', 'quartz_status', NULL, 0, 'admin', '2020-04-16 15:30:14', NULL, NULL, NULL); +INSERT INTO `sys_dict` VALUES ('1280401766745718786', '租户状态', 'tenant_status', '租户状态', 0, 'admin', '2020-07-07 15:22:25', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1356445645198135298', '开关', 'is_open', NULL, 0, 'admin', '2021-02-02 11:33:38', 'admin', '2021-02-02 15:28:12', 0); +INSERT INTO `sys_dict` VALUES ('1415509679443714049', '涉及业务', 'km_dict_business', '涉及业务', 0, 'admin', '2021-07-14 22:13:01', 'admin', '2021-07-29 17:16:56', 0); +INSERT INTO `sys_dict` VALUES ('1415572544998932482', '文档来源', 'km_dict_source', '文档来源', 0, 'admin', '2021-07-15 02:22:49', 'admin', '2021-07-29 17:16:51', 0); +INSERT INTO `sys_dict` VALUES ('1415574243599777794', '分类目录', 'km_dict_category', '分类目录', 0, 'admin', '2021-07-15 02:29:34', 'admin', '2021-07-29 17:16:46', 0); +INSERT INTO `sys_dict` VALUES ('1415575033756319746', '文档版本状态', 'km_dict_versions', '文档版本状态', 0, 'admin', '2021-07-15 02:32:43', 'admin', '2021-07-29 17:16:40', 0); +INSERT INTO `sys_dict` VALUES ('1418495479619317761', '入库状态', 'dict_fti_flag', NULL, 0, 'admin', '2021-07-23 03:57:31', 'admin', '2021-07-23 04:04:33', 0); +INSERT INTO `sys_dict` VALUES ('1420563456950808577', '操作类型', 'dict_doc_visit_type', '操作日志-操作类型', 0, 'admin', '2021-07-29 09:54:56', 'admin', '2021-07-29 10:06:39', 0); +INSERT INTO `sys_dict` VALUES ('1435461054779015169', '文档状态', 'doc_dict_status', NULL, 0, 'admin', '2021-09-08 12:32:40', 'admin', '2021-09-08 12:46:04', 0); +INSERT INTO `sys_dict` VALUES ('1435763999777144834', '统计维度', 'dict_statisticsType', NULL, 0, 'admin', '2021-09-09 08:36:27', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1446749054125019137', '是否公开', 'dict_is_open', NULL, 1, 'admin', '2021-10-09 16:07:08', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('1448189415518433282', '年份', 'km_dict_year', '发布年份', 0, 'admin', '2021-10-13 15:30:37', 'ceshi', '2021-10-14 23:12:52', 0); +INSERT INTO `sys_dict` VALUES ('1450412344901677057', '公开方式', 'km_dict_public_remark', '公开方式', 0, 'ceshi', '2021-10-19 18:43:45', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('236e8a4baff0db8c62c00dd95632834f', '同步工作流引擎', 'activiti_sync', '同步工作流引擎', 0, 'admin', '2019-05-15 15:27:33', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('2e02df51611a4b9632828ab7e5338f00', '权限策略', 'perms_type', '权限策略', 0, 'admin', '2019-04-26 18:26:55', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('2f0320997ade5dd147c90130f7218c3e', '推送类别', 'msg_type', NULL, 0, 'admin', '2019-03-17 21:21:32', 'admin', '2019-03-26 19:57:45', 0); +INSERT INTO `sys_dict` VALUES ('3486f32803bb953e7155dab3513dc68b', '删除状态', 'del_flag', NULL, 0, 'admin', '2019-01-18 21:46:26', 'admin', '2019-03-30 11:17:11', 0); +INSERT INTO `sys_dict` VALUES ('3d9a351be3436fbefb1307d4cfb49bf2', '性别', 'sex', NULL, 0, NULL, '2019-01-04 14:56:32', 'admin', '2019-03-30 11:28:27', 1); +INSERT INTO `sys_dict` VALUES ('4274efc2292239b6f000b153f50823ff', '全局权限策略', 'global_perms_type', '全局权限策略', 0, 'admin', '2019-05-10 17:54:05', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('4c03fca6bf1f0299c381213961566349', 'Online图表展示模板', 'online_graph_display_template', 'Online图表展示模板', 0, 'admin', '2019-04-12 17:28:50', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('4c753b5293304e7a445fd2741b46529d', '字典状态', 'dict_item_status', NULL, 0, 'admin', '2020-06-18 23:18:42', 'admin', '2019-03-30 19:33:52', 1); +INSERT INTO `sys_dict` VALUES ('4d7fec1a7799a436d26d02325eff295e', '优先级', 'priority', '优先级', 0, 'admin', '2019-03-16 17:03:34', 'admin', '2019-04-16 17:39:23', 0); +INSERT INTO `sys_dict` VALUES ('4e4602b3e3686f0911384e188dc7efb4', '条件规则', 'rule_conditions', NULL, 0, 'admin', '2019-04-01 10:15:03', 'admin', '2019-04-01 10:30:47', 0); +INSERT INTO `sys_dict` VALUES ('4f69be5f507accea8d5df5f11346181a', '发送消息类型', 'msgType', NULL, 0, 'admin', '2019-04-11 14:27:09', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('68168534ff5065a152bfab275c2136f8', '有效无效状态', 'valid_status', '有效无效状态', 0, 'admin', '2020-09-26 19:21:14', 'admin', '2019-04-26 19:21:23', 0); +INSERT INTO `sys_dict` VALUES ('6b78e3f59faec1a4750acff08030a79b', '用户类型', 'user_type', NULL, 0, NULL, '2019-01-04 14:59:01', 'admin', '2019-03-18 23:28:18', 0); +INSERT INTO `sys_dict` VALUES ('72cce0989df68887546746d8f09811aa', 'Online表单类型', 'cgform_table_type', NULL, 0, 'admin', '2019-01-27 10:13:02', 'admin', '2019-03-30 11:37:36', 0); +INSERT INTO `sys_dict` VALUES ('78bda155fe380b1b3f175f1e88c284c6', '流程状态', 'bpm_status', '流程状态', 0, 'admin', '2019-05-09 16:31:52', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('83bfb33147013cc81640d5fd9eda030c', '日志类型', 'log_type', NULL, 0, 'admin', '2019-03-18 23:22:19', NULL, NULL, 1); +INSERT INTO `sys_dict` VALUES ('845da5006c97754728bf48b6a10f79cc', '状态', 'status', NULL, 0, 'admin', '2019-03-18 21:45:25', 'admin', '2019-03-18 21:58:25', 0); +INSERT INTO `sys_dict` VALUES ('880a895c98afeca9d9ac39f29e67c13e', '操作类型', 'operate_type', '操作类型', 0, 'admin', '2019-07-22 10:54:29', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('8dfe32e2d29ea9430a988b3b558bf233', '发布状态', 'send_status', '发布状态', 0, 'admin', '2019-04-16 17:40:42', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('a7adbcd86c37f7dbc9b66945c82ef9e6', '1是0否', 'yn', NULL, 0, 'admin', '2019-05-22 19:29:29', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('a9d9942bd0eccb6e89de92d130ec4c4a', '消息发送状态', 'msgSendStatus', NULL, 0, 'admin', '2019-04-12 18:18:17', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('ac2f7c0c5c5775fcea7e2387bcb22f01', '菜单类型', 'menu_type', NULL, 0, 'admin', '2020-12-18 23:24:32', 'admin', '2019-04-01 15:27:06', 1); +INSERT INTO `sys_dict` VALUES ('ad7c65ba97c20a6805d5dcdf13cdaf36', 'onlineT类型', 'ceshi_online', NULL, 0, 'admin', '2019-03-22 16:31:49', 'admin', '2019-03-22 16:34:16', 0); +INSERT INTO `sys_dict` VALUES ('bd1b8bc28e65d6feefefb6f3c79f42fd', 'Online图表数据类型', 'online_graph_data_type', 'Online图表数据类型', 0, 'admin', '2019-04-12 17:24:24', 'admin', '2019-04-12 17:24:57', 0); +INSERT INTO `sys_dict` VALUES ('c36169beb12de8a71c8683ee7c28a503', '部门状态', 'depart_status', NULL, 0, 'admin', '2019-03-18 21:59:51', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('c5a14c75172783d72cbee6ee7f5df5d1', 'Online图表类型', 'online_graph_type', 'Online图表类型', 0, 'admin', '2019-04-12 17:04:06', NULL, NULL, 0); +INSERT INTO `sys_dict` VALUES ('d6e1152968b02d69ff358c75b48a6ee1', '流程类型', 'bpm_process_type', NULL, 0, 'admin', '2021-02-22 19:26:54', 'admin', '2019-03-30 18:14:44', 0); +INSERT INTO `sys_dict` VALUES ('fc6cd58fde2e8481db10d3a1e68ce70c', '用户状态', 'user_status', NULL, 0, 'admin', '2019-03-18 21:57:25', 'admin', '2019-03-18 23:11:58', 1); + +-- ---------------------------- +-- Table structure for sys_dict_item +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dict_item`; +CREATE TABLE `sys_dict_item` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `dict_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典id', + `item_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典项文本', + `item_value` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典项值', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `sort_order` decimal(11, 0) NULL DEFAULT NULL COMMENT '排序', + `status` decimal(11, 0) NULL DEFAULT NULL COMMENT '状态(1启用 0不启用)', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL, + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `update_time` datetime(0) NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_dict_item +-- ---------------------------- +INSERT INTO `sys_dict_item` VALUES ('f16c5706f3ae05c57a53850c64ce7c45', 'a9d9942bd0eccb6e89de92d130ec4c4a', '发送成功', '1', NULL, 2, 1, 'admin', '2019-04-12 18:19:43', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('f2a7920421f3335afdf6ad2b342f6b5d', '845da5006c97754728bf48b6a10f79cc', '冻结', '2', NULL, NULL, 1, 'admin', '2019-03-18 21:46:02', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('f37f90c496ec9841c4c326b065e00bb2', '83bfb33147013cc81640d5fd9eda030c', '登录日志', '1', NULL, NULL, 1, 'admin', '2019-03-18 23:22:37', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('f753aff60ff3931c0ecb4812d8b5e643', '4c03fca6bf1f0299c381213961566349', '双排布局', 'double', NULL, 3, 1, 'admin', '2019-04-12 17:43:51', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('f80a8f6838215753b05e1a5ba3346d22', '880a895c98afeca9d9ac39f29e67c13e', '删除', '4', NULL, 4, 1, 'admin', '2019-07-22 10:55:14', 'admin', '2019-07-22 10:55:30'); +INSERT INTO `sys_dict_item` VALUES ('fcec03570f68a175e1964808dc3f1c91', '4c03fca6bf1f0299c381213961566349', 'Tab风格', 'tab', NULL, 1, 1, 'admin', '2019-04-12 17:43:31', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('fe50b23ae5e68434def76f67cef35d2d', '78bda155fe380b1b3f175f1e88c284c6', '已作废', '4', '已作废', 4, 1, 'admin', '2021-09-09 16:33:43', 'admin', '2019-05-09 16:34:40'); +INSERT INTO `sys_dict_item` VALUES ('1420564005536411661', '1420563456950808577', '修改', '6', '修改', 6, 1, 'admin', '2021-07-29 09:57:06', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1420564005536411664', '1420563456950808577', '删除', '7', '删除', 7, 1, 'admin', '2021-07-29 09:57:06', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1450412465588580354', '1450412344901677057', '主动公开', '1', NULL, 1, 1, NULL, '2021-10-19 18:44:14', 'ceshi', '2021-11-12 01:33:39'); +INSERT INTO `sys_dict_item` VALUES ('1450412578524409857', '1450412344901677057', '依申请公开', '2', NULL, 2, 1, NULL, '2021-10-19 18:44:41', 'ceshi', '2021-10-19 19:10:43'); +INSERT INTO `sys_dict_item` VALUES ('1450412635868934145', '1450412344901677057', '不公开', '3', NULL, 3, 1, NULL, '2021-10-19 18:44:54', 'ceshi', '2021-10-19 19:10:53'); +INSERT INTO `sys_dict_item` VALUES ('0072d115e07c875d76c9b022e2179128', '4d7fec1a7799a436d26d02325eff295e', '低', 'L', '低', 3, 1, 'admin', '2019-04-16 17:04:59', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('05a2e732ce7b00aa52141ecc3e330b4e', '3486f32803bb953e7155dab3513dc68b', '已删除', '1', NULL, NULL, 1, 'admin', '2025-10-18 21:46:56', 'admin', '2019-03-28 22:23:20'); +INSERT INTO `sys_dict_item` VALUES ('096c2e758d823def3855f6376bc736fb', 'bd1b8bc28e65d6feefefb6f3c79f42fd', 'SQL', 'sql', NULL, 1, 1, 'admin', '2019-04-12 17:26:26', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('0c9532916f5cd722017b46bc4d953e41', '2f0320997ade5dd147c90130f7218c3e', '指定用户', 'USER', NULL, NULL, 1, 'admin', '2019-03-17 21:22:19', 'admin', '2019-03-17 21:22:28'); +INSERT INTO `sys_dict_item` VALUES ('0ca4beba9efc4f9dd54af0911a946d5c', '72cce0989df68887546746d8f09811aa', '附表', '3', NULL, 3, 1, 'admin', '2019-03-27 10:13:43', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1030a2652608f5eac3b49d70458b8532', '2e02df51611a4b9632828ab7e5338f00', '禁用', '2', '禁用', 2, 1, 'admin', '2021-03-26 18:27:28', 'admin', '2019-04-26 18:39:11'); +INSERT INTO `sys_dict_item` VALUES ('1174509082208395266', '1174511106530525185', '岗位', '3', '岗位', 1, 1, 'admin', '2019-09-19 10:31:16', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1174509601047994369', '1174509082208395266', '员级', '1', NULL, 1, 1, 'admin', '2019-09-19 10:24:45', 'admin', '2019-09-23 11:46:39'); +INSERT INTO `sys_dict_item` VALUES ('1174509667297026049', '1174509082208395266', '助级', '2', NULL, 2, 1, 'admin', '2019-09-19 10:25:01', 'admin', '2019-09-23 11:46:47'); +INSERT INTO `sys_dict_item` VALUES ('1174509713568587777', '1174509082208395266', '中级', '3', NULL, 3, 1, 'admin', '2019-09-19 10:25:12', 'admin', '2019-09-23 11:46:56'); +INSERT INTO `sys_dict_item` VALUES ('1174509788361416705', '1174509082208395266', '副高级', '4', NULL, 4, 1, 'admin', '2019-09-19 10:25:30', 'admin', '2019-09-23 11:47:06'); +INSERT INTO `sys_dict_item` VALUES ('1174509835803189250', '1174509082208395266', '正高级', '5', NULL, 5, 1, 'admin', '2019-09-19 10:25:41', 'admin', '2019-09-23 11:47:12'); +INSERT INTO `sys_dict_item` VALUES ('1174511197735665665', '1174511106530525185', '公司', '1', '公司', 1, 1, 'admin', '2019-09-19 10:31:05', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1174511244036587521', '1174511106530525185', '部门', '2', '部门', 1, 1, 'admin', '2019-09-19 10:31:16', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1178295553450061826', '1178295274528845826', '可编辑(未授权禁用)', '2', NULL, 2, 1, 'admin', '2019-09-29 21:08:46', 'admin', '2019-09-29 21:09:18'); +INSERT INTO `sys_dict_item` VALUES ('1178295639554928641', '1178295274528845826', '可见(未授权不可见)', '1', NULL, 1, 1, 'admin', '2019-09-29 21:09:06', 'admin', '2019-09-29 21:09:24'); +INSERT INTO `sys_dict_item` VALUES ('1199517884758368257', '1199517671259906049', '一般', '1', NULL, 1, 1, 'admin', '2019-11-27 10:38:44', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199517914017832962', '1199517671259906049', '重要', '2', NULL, 1, 1, 'admin', '2019-11-27 10:38:51', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199517941339529217', '1199517671259906049', '紧急', '3', NULL, 1, 1, 'admin', '2019-11-27 10:38:58', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199518186144276482', '1199518099888414722', '日常记录', '1', NULL, 1, 1, 'admin', '2019-11-27 10:39:56', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199518214858481666', '1199518099888414722', '本周工作', '2', NULL, 1, 1, 'admin', '2019-11-27 10:40:03', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199518235943247874', '1199518099888414722', '下周计划', '3', NULL, 1, 1, 'admin', '2019-11-27 10:40:08', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199520817285701634', '1199520177767587841', '列表', '1', NULL, 1, 1, 'admin', '2019-11-27 10:50:24', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199520835035996161', '1199520177767587841', '链接', '2', NULL, 1, 1, 'admin', '2019-11-27 10:50:28', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199525468672405505', '1199525215290306561', '未开始', '0', NULL, 1, 1, 'admin', '2019-11-27 11:08:52', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199525490575060993', '1199525215290306561', '进行中', '1', NULL, 1, 1, 'admin', '2019-11-27 11:08:58', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1199525506429530114', '1199525215290306561', '已完成', '2', NULL, 1, 1, 'admin', '2019-11-27 11:09:02', 'admin', '2019-11-27 11:10:02'); +INSERT INTO `sys_dict_item` VALUES ('1199607547704647681', '4f69be5f507accea8d5df5f11346181a', '系统', '4', NULL, 1, 1, 'admin', '2019-11-27 16:35:02', 'admin', '2019-11-27 19:37:46'); +INSERT INTO `sys_dict_item` VALUES ('1209733775114702850', '1209733563293962241', 'MySQL5.5', '1', NULL, 1, 1, 'admin', '2019-12-25 15:13:02', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1209733839933476865', '1209733563293962241', 'Oracle', '2', NULL, 3, 1, 'admin', '2019-12-25 15:13:18', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1209733903020003330', '1209733563293962241', 'SQLServer', '3', NULL, 4, 1, 'admin', '2019-12-25 15:13:33', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1232913424813486081', '1232913193820581889', '官方示例', 'demo', NULL, 1, 1, 'admin', '2020-02-27 14:20:42', 'admin', '2020-02-27 14:21:37'); +INSERT INTO `sys_dict_item` VALUES ('1232913493717512194', '1232913193820581889', '流程表单', 'bpm', NULL, 2, 1, 'admin', '2020-02-27 14:20:58', 'admin', '2020-02-27 14:22:20'); +INSERT INTO `sys_dict_item` VALUES ('1232913605382467585', '1232913193820581889', '测试表单', 'temp', NULL, 4, 1, 'admin', '2020-02-27 14:21:25', 'admin', '2020-02-27 14:22:16'); +INSERT INTO `sys_dict_item` VALUES ('1232914232372195330', '1232913193820581889', '导入表单', 'bdfl_include', NULL, 5, 1, 'admin', '2020-02-27 14:23:54', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1234371726545010689', '4e4602b3e3686f0911384e188dc7efb4', '左模糊', 'LEFT_LIKE', '左模糊', 7, 1, 'admin', '2020-03-02 14:55:27', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1234371809495760898', '4e4602b3e3686f0911384e188dc7efb4', '右模糊', 'RIGHT_LIKE', '右模糊', 7, 1, 'admin', '2020-03-02 14:55:47', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1250688147579228161', '1250687930947620866', '正常', '0', NULL, 1, 1, 'admin', '2020-04-16 15:31:05', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1250688201064992770', '1250687930947620866', '停止', '-1', NULL, 1, 1, 'admin', '2020-04-16 15:31:18', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1280401815068295170', '1280401766745718786', '正常', '1', NULL, 1, 1, 'admin', '2020-07-07 15:22:36', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1280401847607705602', '1280401766745718786', '冻结', '0', NULL, 1, 1, 'admin', '2020-07-07 15:22:44', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1305827309355302914', 'bd1b8bc28e65d6feefefb6f3c79f42fd', 'API', 'api', NULL, 3, 1, 'admin', '2020-09-15 19:14:26', 'admin', '2020-09-15 19:14:41'); +INSERT INTO `sys_dict_item` VALUES ('1334440962954936321', '1209733563293962241', 'MYSQL5.7', '4', NULL, 1, 1, 'admin', '2020-12-03 18:16:02', 'admin', '2020-12-03 18:16:02'); +INSERT INTO `sys_dict_item` VALUES ('1356445705549975553', '1356445645198135298', '是', 'Y', NULL, 1, 1, 'admin', '2021-02-02 11:33:52', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1356445754212290561', '1356445645198135298', '否', 'N', NULL, 1, 1, 'admin', '2021-02-02 11:34:04', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415510117652013057', '1415509679443714049', '工作汇报', '1', '', 1, 1, 'admin', '2021-07-14 22:14:46', 'ceshi', '2021-11-23 11:50:48'); +INSERT INTO `sys_dict_item` VALUES ('1415512755764371457', '1415509679443714049', '教学研究', '2', '', 1, 1, 'admin', '2021-07-14 22:25:15', 'ceshi', '2021-11-23 11:51:07'); +INSERT INTO `sys_dict_item` VALUES ('1415512840657084418', '1415509679443714049', '教学材料', '3', '', 1, 1, 'admin', '2021-07-14 22:25:35', 'ceshi', '2021-11-23 11:51:44'); +INSERT INTO `sys_dict_item` VALUES ('1415512908009218049', '1415509679443714049', '行业交流', '4', '', 1, 1, 'admin', '2021-07-14 22:25:51', 'ceshi', '2021-11-23 11:52:07'); +INSERT INTO `sys_dict_item` VALUES ('1415512988313362433', '1415509679443714049', '政策研究', '5', NULL, 1, 1, 'admin', '2021-07-14 22:26:10', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415513052456853505', '1415509679443714049', '学生档案', '6', '', 1, 1, 'admin', '2021-07-14 22:26:25', 'ceshi', '2021-11-23 11:54:12'); +INSERT INTO `sys_dict_item` VALUES ('1415513104826933249', '1415509679443714049', '备课材料', '7', '', 1, 1, 'admin', '2021-07-14 22:26:38', 'ceshi', '2021-11-23 11:54:29'); +INSERT INTO `sys_dict_item` VALUES ('1415518346117292034', '1415509679443714049', '会议纪要', '8', '', 1, 1, 'admin', '2021-07-14 22:47:27', 'ceshi', '2021-11-23 11:54:44'); +INSERT INTO `sys_dict_item` VALUES ('1415518423493812226', '1415509679443714049', '政府文件', '9', '', 1, 1, 'admin', '2021-07-14 22:47:46', 'ceshi', '2021-11-23 13:52:59'); +INSERT INTO `sys_dict_item` VALUES ('1415518535649501185', '1415509679443714049', '考试题库', '10', '', 1, 1, 'admin', '2021-07-14 22:48:13', 'ceshi', '2021-11-23 13:53:32'); +INSERT INTO `sys_dict_item` VALUES ('1415518651982716929', '1415509679443714049', '进修', '11', '', 1, 0, 'admin', '2021-07-14 22:48:40', 'ceshi', '2021-11-23 13:57:07'); +INSERT INTO `sys_dict_item` VALUES ('1415518739014524929', '1415509679443714049', '继续教育', '12', '', 1, 0, 'admin', '2021-07-14 22:49:01', 'ceshi', '2021-11-23 13:57:17'); +INSERT INTO `sys_dict_item` VALUES ('1415518841401679874', '1415509679443714049', '听课评课', '13', '', 1, 0, 'admin', '2021-07-14 22:49:26', 'ceshi', '2021-11-23 13:57:27'); +INSERT INTO `sys_dict_item` VALUES ('1415518946661933057', '1415509679443714049', '教育实践', '14', '', 1, 0, 'admin', '2021-07-14 22:49:51', 'ceshi', '2021-11-23 13:58:04'); +INSERT INTO `sys_dict_item` VALUES ('1415519089138245634', '1415509679443714049', '联合办学', '15', '', 1, 0, 'admin', '2021-07-14 22:50:25', 'ceshi', '2021-11-23 13:58:12'); +INSERT INTO `sys_dict_item` VALUES ('1415519256226734082', '1415509679443714049', '学校管理', '16', '', 1, 0, 'admin', '2021-07-14 22:51:04', 'ceshi', '2021-11-23 13:58:29'); +INSERT INTO `sys_dict_item` VALUES ('1415519311788679170', '1415509679443714049', '职称考评', '17', '', 1, 0, 'admin', '2021-07-14 22:51:18', 'ceshi', '2021-11-23 13:58:45'); +INSERT INTO `sys_dict_item` VALUES ('1415519414536544257', '1415509679443714049', '人事政策', '18', '', 1, 0, 'admin', '2021-07-14 22:51:42', 'ceshi', '2021-11-23 13:58:57'); +INSERT INTO `sys_dict_item` VALUES ('1415519478847807490', '1415509679443714049', '其他', '19', '', 11, 1, 'admin', '2021-07-14 22:51:57', 'ceshi', '2021-11-23 13:55:27'); +INSERT INTO `sys_dict_item` VALUES ('1415572705485586434', '1415572544998932482', '中央国务院全国人大', '1', NULL, 1, 1, 'admin', '2021-07-15 02:23:28', 'ceshi', '2021-10-15 16:44:35'); +INSERT INTO `sys_dict_item` VALUES ('1415572764965011458', '1415572544998932482', '自然资源部', '2', NULL, 1, 1, 'admin', '2021-07-15 02:23:42', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415572821936242690', '1415572544998932482', '其他部委', '3', NULL, 1, 1, 'admin', '2021-07-15 02:23:55', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415572891293253634', '1415572544998932482', '省委省府省人大', '4', NULL, 1, 1, 'admin', '2021-07-15 02:24:12', 'ceshi', '2021-10-15 16:44:49'); +INSERT INTO `sys_dict_item` VALUES ('1415572979956645890', '1415572544998932482', '省自然资源厅', '5', NULL, 1, 1, 'admin', '2021-07-15 02:24:33', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415573174215835649', '1415572544998932482', '其他省直单位', '6', NULL, 1, 1, 'admin', '2021-07-15 02:25:19', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415573266092064770', '1415572544998932482', '省土地调查规划院', '7', NULL, 1, 1, 'admin', '2021-07-15 02:25:41', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415573399961665538', '1415572544998932482', '省内其他单位', '8', NULL, 1, 1, 'admin', '2021-07-15 02:26:13', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415573454684749826', '1415572544998932482', '外省单位', '9', NULL, 1, 1, 'admin', '2021-07-15 02:26:26', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415573499555414018', '1415572544998932482', '境外', '10', NULL, 1, 1, 'admin', '2021-07-15 02:26:37', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415573567788351489', '1415572544998932482', '媒体', '11', NULL, 1, 1, 'admin', '2021-07-15 02:26:53', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415573676152389634', '1415572544998932482', '个人', '12', NULL, 1, 1, 'admin', '2021-07-15 02:27:19', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415574342098812929', '1415574243599777794', '语文', '1', '', 1, 1, 'admin', '2021-07-15 02:29:58', 'ceshi', '2021-11-23 11:39:09'); +INSERT INTO `sys_dict_item` VALUES ('1415574391214112769', '1415574243599777794', '数学', '2', '', 1, 1, 'admin', '2021-07-15 02:30:10', 'ceshi', '2021-11-23 11:39:18'); +INSERT INTO `sys_dict_item` VALUES ('1415574432960020481', '1415574243599777794', '英语', '3', '', 1, 1, 'admin', '2021-07-15 02:30:20', 'ceshi', '2021-11-23 11:39:24'); +INSERT INTO `sys_dict_item` VALUES ('1415574502241533954', '1415574243599777794', '品德', '4', '', 1, 1, 'admin', '2021-07-15 02:30:36', 'ceshi', '2021-11-23 11:39:43'); +INSERT INTO `sys_dict_item` VALUES ('1415574564849909762', '1415574243599777794', '体育', '5', '', 1, 1, 'admin', '2021-07-15 02:30:51', 'ceshi', '2021-11-23 11:39:50'); +INSERT INTO `sys_dict_item` VALUES ('1415574697549299713', '1415574243599777794', '美术', '7', '', 1, 1, 'admin', '2021-07-15 02:31:23', 'ceshi', '2021-11-23 11:40:23'); +INSERT INTO `sys_dict_item` VALUES ('1415575114165321729', '1415575033756319746', '最终稿', '1', NULL, 1, 1, 'admin', '2021-07-15 02:33:02', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1415575176530427906', '1415575033756319746', '过程稿', '2', NULL, 1, 1, 'admin', '2021-07-15 02:33:17', 'ceshi', '2021-10-26 17:26:24'); +INSERT INTO `sys_dict_item` VALUES ('1418496971277398018', '1418495479619317761', '入库失败', '-1', NULL, 1, 1, 'admin', '2021-07-23 04:03:27', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1418497014818467842', '1418495479619317761', '等待入库', '0', NULL, 1, 1, 'admin', '2021-07-23 04:03:37', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1418497058619584514', '1418495479619317761', '已入库', '1', NULL, 1, 1, 'admin', '2021-07-23 04:03:48', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1418497118333890561', '1418495479619317761', '不需要入库', '2', NULL, 1, 1, 'admin', '2021-07-23 04:04:02', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1420563600144347137', '1420563456950808577', '上传', '0', '上传', 0, 1, 'admin', '2021-07-29 09:55:30', 'admin', '2021-07-29 09:55:57'); +INSERT INTO `sys_dict_item` VALUES ('1420563682348511233', '1420563456950808577', '审核通过', '1', '审核通过', 1, 1, 'admin', '2021-07-29 09:55:49', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1420563785893294082', '1420563456950808577', '审核拒绝', '2', '审核拒绝', 2, 1, 'admin', '2021-07-29 09:56:14', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1420563852746305538', '1420563456950808577', '修改预览文档', '3', '修改预览文档', 3, 1, 'admin', '2021-07-29 09:56:30', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1420563930554839041', '1420563456950808577', '下载', '4', '下载', 4, 1, 'admin', '2021-07-29 09:56:49', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1420564005536411650', '1420563456950808577', '预览', '5', '预览', 5, 1, 'admin', '2021-07-29 09:57:06', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435461449668542466', '1435461054779015169', '草稿', '0', NULL, 1, 1, 'admin', '2021-09-08 12:34:14', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435461470677811202', '1435461054779015169', '待审核', '1', NULL, 1, 1, 'admin', '2021-09-08 12:34:19', 'admin', '2021-09-08 12:35:03'); +INSERT INTO `sys_dict_item` VALUES ('1435461526139092994', '1435461054779015169', '审核通过', '2', NULL, 1, 1, 'admin', '2021-09-08 12:34:32', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435461599442944002', '1435461054779015169', '审核驳回', '3', NULL, 1, 1, 'admin', '2021-09-08 12:34:50', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435764110502576129', '1435763999777144834', '分类', '1', NULL, 1, 1, 'admin', '2021-09-09 08:36:54', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435764144711319554', '1435763999777144834', '来源', '2', NULL, 1, 1, 'admin', '2021-09-09 08:37:02', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435764190253072385', '1435763999777144834', '审核状态', '3', NULL, 1, 1, 'admin', '2021-09-09 08:37:13', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435764240131735554', '1435763999777144834', '涉及业务', '4', NULL, 1, 1, 'admin', '2021-09-09 08:37:25', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1435764293730746370', '1435763999777144834', '版本状态', '5', NULL, 1, 1, 'admin', '2021-09-09 08:37:37', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1446749165269880833', '1446749054125019137', '公开', '0', NULL, 1, 1, 'admin', '2021-10-09 16:07:35', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1446749218503987201', '1446749054125019137', '不公开', '1', NULL, 1, 1, 'admin', '2021-10-09 16:07:48', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448189485705916417', '1448189415518433282', '2021年', '2021', NULL, 2021, 1, NULL, '2021-10-13 15:30:54', NULL, '2021-10-13 15:31:47'); +INSERT INTO `sys_dict_item` VALUES ('1448189539787272194', '1448189415518433282', '2022年', '2022', NULL, 2022, 1, NULL, '2021-10-13 15:31:07', NULL, '2021-10-13 15:31:59'); +INSERT INTO `sys_dict_item` VALUES ('1448189588860628993', '1448189415518433282', '2020年', '2020', NULL, 2020, 1, NULL, '2021-10-13 15:31:19', NULL, '2021-10-13 15:31:54'); +INSERT INTO `sys_dict_item` VALUES ('1448199169691152386', '1448189415518433282', '2019年', '2019', NULL, 2019, 1, NULL, '2021-10-13 16:09:23', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199236258951170', '1448189415518433282', '2018年', '2018', NULL, 2018, 1, NULL, '2021-10-13 16:09:39', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199306417074178', '1448189415518433282', '2023年', '2023', NULL, 2023, 1, NULL, '2021-10-13 16:09:56', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199379939028994', '1448189415518433282', '2024年', '2024', NULL, 2024, 1, NULL, '2021-10-13 16:10:13', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199445483417601', '1448189415518433282', '2025年', '2025', NULL, 2025, 1, NULL, '2021-10-13 16:10:29', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199700622929921', '1448189415518433282', '2017年', '2017', NULL, 2017, 1, NULL, '2021-10-13 16:11:30', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199760270127105', '1448189415518433282', '2016年', '2016', NULL, 2016, 1, NULL, '2021-10-13 16:11:44', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199814963851265', '1448189415518433282', '2015年', '2015', NULL, 2015, 1, NULL, '2021-10-13 16:11:57', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199899512631298', '1448189415518433282', '2026年', '2026', NULL, 2026, 1, NULL, '2021-10-13 16:12:17', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448199976788488193', '1448189415518433282', '2027年', '2027', NULL, 2027, 1, NULL, '2021-10-13 16:12:35', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448200037769474050', '1448189415518433282', '2028年', '2028', NULL, 2028, 1, NULL, '2021-10-13 16:12:50', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1448200113774456834', '1448189415518433282', '2029年', '2029', NULL, 2029, 1, NULL, '2021-10-13 16:13:08', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('147c48ff4b51545032a9119d13f3222a', 'd6e1152968b02d69ff358c75b48a6ee1', '测试流程', 'test', NULL, 1, 1, 'admin', '2019-03-22 19:27:05', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1543fe7e5e26fb97cdafe4981bedc0c8', '4c03fca6bf1f0299c381213961566349', '单排布局', 'single', NULL, 2, 1, 'admin', '2022-07-12 17:43:39', 'admin', '2019-04-12 17:43:57'); +INSERT INTO `sys_dict_item` VALUES ('1ce390c52453891f93514c1bd2795d44', 'ad7c65ba97c20a6805d5dcdf13cdaf36', '000', '00', NULL, 1, 1, 'admin', '2019-03-22 16:34:34', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('1db531bcff19649fa82a644c8a939dc4', '4c03fca6bf1f0299c381213961566349', '组合布局', 'combination', NULL, 4, 1, 'admin', '2019-05-11 16:07:08', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('222705e11ef0264d4214affff1fb4ff9', '4f69be5f507accea8d5df5f11346181a', '短信', '1', NULL, 1, 1, 'admin', '2023-02-28 10:50:36', 'admin', '2019-04-28 10:58:11'); +INSERT INTO `sys_dict_item` VALUES ('23a5bb76004ed0e39414e928c4cde155', '4e4602b3e3686f0911384e188dc7efb4', '不等于', '!=', '不等于', 3, 1, 'admin', '2019-04-01 16:46:15', 'admin', '2019-04-01 17:48:40'); +INSERT INTO `sys_dict_item` VALUES ('25847e9cb661a7c711f9998452dc09e6', '4e4602b3e3686f0911384e188dc7efb4', '小于等于', '<=', '小于等于', 6, 1, 'admin', '2019-04-01 16:44:34', 'admin', '2019-04-01 17:49:10'); +INSERT INTO `sys_dict_item` VALUES ('2d51376643f220afdeb6d216a8ac2c01', '68168534ff5065a152bfab275c2136f8', '有效', '1', '有效', 2, 1, 'admin', '2019-04-26 19:22:01', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('308c8aadf0c37ecdde188b97ca9833f5', '8dfe32e2d29ea9430a988b3b558bf233', '已发布', '1', '已发布', 2, 1, 'admin', '2019-04-16 17:41:24', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('333e6b2196e01ef9a5f76d74e86a6e33', '8dfe32e2d29ea9430a988b3b558bf233', '未发布', '0', '未发布', 1, 1, 'admin', '2019-04-16 17:41:12', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('337ea1e401bda7233f6258c284ce4f50', 'bd1b8bc28e65d6feefefb6f3c79f42fd', 'JSON', 'json', NULL, 1, 1, 'admin', '2019-04-12 17:26:33', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('33bc9d9f753cf7dc40e70461e50fdc54', 'a9d9942bd0eccb6e89de92d130ec4c4a', '发送失败', '2', NULL, 3, 1, 'admin', '2019-04-12 18:20:02', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('3fbc03d6c994ae06d083751248037c0e', '78bda155fe380b1b3f175f1e88c284c6', '已完成', '3', '已完成', 3, 1, 'admin', '2019-05-09 16:33:25', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('41d7aaa40c9b61756ffb1f28da5ead8e', '0b5d19e1fce4b2e6647e6b4a17760c14', '通知公告', '1', NULL, 1, 1, 'admin', '2019-04-22 18:01:57', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('41fa1e9571505d643aea87aeb83d4d76', '4e4602b3e3686f0911384e188dc7efb4', '等于', '=', '等于', 4, 1, 'admin', '2019-04-01 16:45:24', 'admin', '2019-04-01 17:49:00'); +INSERT INTO `sys_dict_item` VALUES ('43d2295b8610adce9510ff196a49c6e9', '845da5006c97754728bf48b6a10f79cc', '正常', '1', NULL, NULL, 1, 'admin', '2019-03-18 21:45:51', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('4f05fb5376f4c61502c5105f52e4dd2b', '83bfb33147013cc81640d5fd9eda030c', '操作日志', '2', NULL, NULL, 1, 'admin', '2019-03-18 23:22:49', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('50223341bfb5ba30bf6319789d8d17fe', 'd6e1152968b02d69ff358c75b48a6ee1', '业务办理', 'business', NULL, 3, 1, 'admin', '2023-04-22 19:28:05', 'admin', '2019-03-22 23:24:39'); +INSERT INTO `sys_dict_item` VALUES ('51222413e5906cdaf160bb5c86fb827c', 'a7adbcd86c37f7dbc9b66945c82ef9e6', '是', '1', NULL, 1, 1, 'admin', '2019-05-22 19:29:45', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('538fca35afe004972c5f3947c039e766', '2e02df51611a4b9632828ab7e5338f00', '显示', '1', '显示', 1, 1, 'admin', '2025-03-26 18:27:13', 'admin', '2019-04-26 18:39:07'); +INSERT INTO `sys_dict_item` VALUES ('5584c21993bde231bbde2b966f2633ac', '4e4602b3e3686f0911384e188dc7efb4', '自定义SQL表达式', 'USE_SQL_RULES', '自定义SQL表达式', 9, 1, 'admin', '2019-04-01 10:45:24', 'admin', '2019-04-01 17:49:27'); +INSERT INTO `sys_dict_item` VALUES ('58b73b344305c99b9d8db0fc056bbc0a', '72cce0989df68887546746d8f09811aa', '主表', '2', NULL, 2, 1, 'admin', '2019-03-27 10:13:36', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('5b65a88f076b32e8e69d19bbaadb52d5', '2f0320997ade5dd147c90130f7218c3e', '全体用户', 'ALL', NULL, NULL, 1, 'admin', '2020-10-17 21:22:43', 'admin', '2019-03-28 22:17:09'); +INSERT INTO `sys_dict_item` VALUES ('5d833f69296f691843ccdd0c91212b6b', '880a895c98afeca9d9ac39f29e67c13e', '修改', '3', NULL, 3, 1, 'admin', '2019-07-22 10:55:07', 'admin', '2019-07-22 10:55:41'); +INSERT INTO `sys_dict_item` VALUES ('5d84a8634c8fdfe96275385075b105c9', '3d9a351be3436fbefb1307d4cfb49bf2', '女', '2', NULL, 2, 1, NULL, '2019-01-04 14:56:56', NULL, '2019-01-04 17:38:12'); +INSERT INTO `sys_dict_item` VALUES ('66c952ae2c3701a993e7db58f3baf55e', '4e4602b3e3686f0911384e188dc7efb4', '大于', '>', '大于', 1, 1, 'admin', '2019-04-01 10:45:46', 'admin', '2019-04-01 17:48:29'); +INSERT INTO `sys_dict_item` VALUES ('6937c5dde8f92e9a00d4e2ded9198694', 'ad7c65ba97c20a6805d5dcdf13cdaf36', 'easyui', '3', NULL, 1, 1, 'admin', '2019-03-22 16:32:15', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('69cacf64e244100289ddd4aa9fa3b915', 'a9d9942bd0eccb6e89de92d130ec4c4a', '未发送', '0', NULL, 1, 1, 'admin', '2019-04-12 18:19:23', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('6a7a9e1403a7943aba69e54ebeff9762', '4f69be5f507accea8d5df5f11346181a', '邮件', '2', NULL, 2, 1, 'admin', '2031-02-28 10:50:44', 'admin', '2019-04-28 10:59:03'); +INSERT INTO `sys_dict_item` VALUES ('6c682d78ddf1715baf79a1d52d2aa8c2', '72cce0989df68887546746d8f09811aa', '单表', '1', NULL, 1, 1, 'admin', '2019-03-27 10:13:29', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('6d404fd2d82311fbc87722cd302a28bc', '4e4602b3e3686f0911384e188dc7efb4', '模糊', 'LIKE', '模糊', 7, 1, 'admin', '2019-04-01 16:46:02', 'admin', '2019-04-01 17:49:20'); +INSERT INTO `sys_dict_item` VALUES ('6d4e26e78e1a09699182e08516c49fc4', '4d7fec1a7799a436d26d02325eff295e', '高', 'H', '高', 1, 1, 'admin', '2019-04-16 17:04:24', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('700e9f030654f3f90e9ba76ab0713551', '6b78e3f59faec1a4750acff08030a79b', '333', '333', NULL, NULL, 1, 'admin', '2019-02-21 19:59:47', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('7050c1522702bac3be40e3b7d2e1dfd8', 'c5a14c75172783d72cbee6ee7f5df5d1', '柱状图', 'bar', NULL, 1, 1, 'admin', '2019-04-12 17:05:17', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('71b924faa93805c5c1579f12e001c809', 'd6e1152968b02d69ff358c75b48a6ee1', 'OA办公', 'oa', NULL, 2, 1, 'admin', '2021-03-22 19:27:17', 'admin', '2019-03-22 23:24:36'); +INSERT INTO `sys_dict_item` VALUES ('75b260d7db45a39fc7f21badeabdb0ed', 'c36169beb12de8a71c8683ee7c28a503', '不启用', '0', NULL, NULL, 1, 'admin', '2019-03-18 23:29:41', 'admin', '2019-03-18 23:29:54'); +INSERT INTO `sys_dict_item` VALUES ('7688469db4a3eba61e6e35578dc7c2e5', 'c36169beb12de8a71c8683ee7c28a503', '启用', '1', NULL, NULL, 1, 'admin', '2019-03-18 23:29:28', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('78ea6cadac457967a4b1c4eb7aaa418c', 'fc6cd58fde2e8481db10d3a1e68ce70c', '正常', '1', NULL, NULL, 1, 'admin', '2019-03-18 23:30:28', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('7ccf7b80c70ee002eceb3116854b75cb', 'ac2f7c0c5c5775fcea7e2387bcb22f01', '按钮权限', '2', NULL, NULL, 1, 'admin', '2019-03-18 23:25:40', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('81fb2bb0e838dc68b43f96cc309f8257', 'fc6cd58fde2e8481db10d3a1e68ce70c', '冻结', '2', NULL, NULL, 1, 'admin', '2019-03-18 23:30:37', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('83250269359855501ec4e9c0b7e21596', '4274efc2292239b6f000b153f50823ff', '可见/可访问(授权后可见/可访问)', '1', NULL, 1, 1, 'admin', '2019-05-10 17:54:51', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('84778d7e928bc843ad4756db1322301f', '4e4602b3e3686f0911384e188dc7efb4', '大于等于', '>=', '大于等于', 5, 1, 'admin', '2019-04-01 10:46:02', 'admin', '2019-04-01 17:49:05'); +INSERT INTO `sys_dict_item` VALUES ('848d4da35ebd93782029c57b103e5b36', 'c5a14c75172783d72cbee6ee7f5df5d1', '饼图', 'pie', NULL, 3, 1, 'admin', '2019-04-12 17:05:49', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('84dfc178dd61b95a72900fcdd624c471', '78bda155fe380b1b3f175f1e88c284c6', '处理中', '2', '处理中', 2, 1, 'admin', '2019-05-09 16:33:01', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('86f19c7e0a73a0bae451021ac05b99dd', 'ac2f7c0c5c5775fcea7e2387bcb22f01', '子菜单', '1', NULL, NULL, 1, 'admin', '2019-03-18 23:25:27', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('8bccb963e1cd9e8d42482c54cc609ca2', '4f69be5f507accea8d5df5f11346181a', '微信', '3', NULL, 3, 1, 'admin', '2021-05-11 14:29:12', 'admin', '2019-04-11 14:29:31'); +INSERT INTO `sys_dict_item` VALUES ('8c618902365ca681ebbbe1e28f11a548', '4c753b5293304e7a445fd2741b46529d', '启用', '1', NULL, 0, 1, 'admin', '2020-07-18 23:19:27', 'admin', '2019-05-17 14:51:18'); +INSERT INTO `sys_dict_item` VALUES ('8cdf08045056671efd10677b8456c999', '4274efc2292239b6f000b153f50823ff', '可编辑(未授权时禁用)', '2', NULL, 2, 1, 'admin', '2019-05-10 17:55:38', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('8ff48e657a7c5090d4f2a59b37d1b878', '4d7fec1a7799a436d26d02325eff295e', '中', 'M', '中', 2, 1, 'admin', '2019-04-16 17:04:40', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('948923658baa330319e59b2213cda97c', '880a895c98afeca9d9ac39f29e67c13e', '添加', '2', NULL, 2, 1, 'admin', '2019-07-22 10:54:59', 'admin', '2019-07-22 10:55:36'); +INSERT INTO `sys_dict_item` VALUES ('9a96c4a4e4c5c9b4e4d0cbf6eb3243cc', '4c753b5293304e7a445fd2741b46529d', '不启用', '0', NULL, 1, 1, 'admin', '2019-03-18 23:19:53', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('a1e7d1ca507cff4a480c8caba7c1339e', '880a895c98afeca9d9ac39f29e67c13e', '导出', '6', NULL, 6, 1, 'admin', '2019-07-22 12:06:50', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('a2be752dd4ec980afaec1efd1fb589af', '8dfe32e2d29ea9430a988b3b558bf233', '已撤销', '2', '已撤销', 3, 1, 'admin', '2019-04-16 17:41:39', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('aa0d8a8042a18715a17f0a888d360aa4', 'ac2f7c0c5c5775fcea7e2387bcb22f01', '一级菜单', '0', NULL, NULL, 1, 'admin', '2019-03-18 23:24:52', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('adcf2a1fe93bb99a84833043f475fe0b', '4e4602b3e3686f0911384e188dc7efb4', '包含', 'IN', '包含', 8, 1, 'admin', '2019-04-01 16:45:47', 'admin', '2019-04-01 17:49:24'); +INSERT INTO `sys_dict_item` VALUES ('b029a41a851465332ee4ee69dcf0a4c2', '0b5d19e1fce4b2e6647e6b4a17760c14', '系统消息', '2', NULL, 1, 1, 'admin', '2019-02-22 18:02:08', 'admin', '2019-04-22 18:02:13'); +INSERT INTO `sys_dict_item` VALUES ('b2a8b4bb2c8e66c2c4b1bb086337f393', '3486f32803bb953e7155dab3513dc68b', '正常', '0', NULL, NULL, 1, 'admin', '2022-10-18 21:46:48', 'admin', '2019-03-28 22:22:20'); +INSERT INTO `sys_dict_item` VALUES ('b57f98b88363188daf38d42f25991956', '6b78e3f59faec1a4750acff08030a79b', '22', '222', NULL, NULL, 0, 'admin', '2019-02-21 19:59:43', 'admin', '2019-03-11 21:23:27'); +INSERT INTO `sys_dict_item` VALUES ('b5f3bd5f66bb9a83fecd89228c0d93d1', '68168534ff5065a152bfab275c2136f8', '无效', '0', '无效', 1, 1, 'admin', '2019-04-26 19:21:49', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('b9fbe2a3602d4a27b45c100ac5328484', '78bda155fe380b1b3f175f1e88c284c6', '待提交', '1', '待提交', 1, 1, 'admin', '2019-05-09 16:32:35', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('ba27737829c6e0e582e334832703d75e', '236e8a4baff0db8c62c00dd95632834f', '同步', '1', '同步', 1, 1, 'admin', '2019-05-15 15:28:15', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('bcec04526b04307e24a005d6dcd27fd6', '880a895c98afeca9d9ac39f29e67c13e', '导入', '5', NULL, 5, 1, 'admin', '2019-07-22 12:06:41', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('c53da022b9912e0aed691bbec3c78473', '880a895c98afeca9d9ac39f29e67c13e', '查询', '1', NULL, 1, 1, 'admin', '2019-07-22 10:54:51', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('c5700a71ad08994d18ad1dacc37a71a9', 'a7adbcd86c37f7dbc9b66945c82ef9e6', '否', '0', NULL, 1, 1, 'admin', '2019-05-22 19:29:55', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('cbfcc5b88fc3a90975df23ffc8cbe29c', 'c5a14c75172783d72cbee6ee7f5df5d1', '曲线图', 'line', NULL, 2, 1, 'admin', '2019-05-12 17:05:30', 'admin', '2019-04-12 17:06:06'); +INSERT INTO `sys_dict_item` VALUES ('d217592908ea3e00ff986ce97f24fb98', 'c5a14c75172783d72cbee6ee7f5df5d1', '数据列表', 'table', NULL, 4, 1, 'admin', '2019-04-12 17:05:56', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('df168368dcef46cade2aadd80100d8aa', '3d9a351be3436fbefb1307d4cfb49bf2', '男', '1', NULL, 1, 1, NULL, '2027-08-04 14:56:49', 'admin', '2019-03-23 22:44:44'); +INSERT INTO `sys_dict_item` VALUES ('e6329e3a66a003819e2eb830b0ca2ea0', '4e4602b3e3686f0911384e188dc7efb4', '小于', '<', '小于', 2, 1, 'admin', '2019-04-01 16:44:15', 'admin', '2019-04-01 17:48:34'); +INSERT INTO `sys_dict_item` VALUES ('e94eb7af89f1dbfa0d823580a7a6e66a', '236e8a4baff0db8c62c00dd95632834f', '不同步', '0', '不同步', 2, 1, 'admin', '2019-05-15 15:28:28', NULL, NULL); +INSERT INTO `sys_dict_item` VALUES ('f0162f4cc572c9273f3e26b2b4d8c082', 'ad7c65ba97c20a6805d5dcdf13cdaf36', 'booostrap', '1', NULL, 1, 1, 'admin', '2021-08-22 16:32:04', 'admin', '2019-03-22 16:33:57'); + +-- ---------------------------- +-- Table structure for sys_fill_rule +-- ---------------------------- +DROP TABLE IF EXISTS `sys_fill_rule`; +CREATE TABLE `sys_fill_rule` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键ID', + `rule_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则名称', + `rule_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则Code', + `rule_class` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则实现类', + `rule_params` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则参数', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + UNIQUE INDEX `uk_sfr_rule_code`(`rule_code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_fill_rule +-- ---------------------------- +INSERT INTO `sys_fill_rule` VALUES ('1202551334738382850', '机构编码生成', 'org_num_role', 'org.jeecg.modules.system.rule.OrgCodeRule', '{\"parentId\":\"c6d7cb4deeac411cb3384b1b31278596\"}', 'admin', '2019-12-09 10:37:06', 'admin', '2019-12-05 19:32:35'); +INSERT INTO `sys_fill_rule` VALUES ('1202787623203065858', '分类字典编码生成', 'category_code_rule', 'org.jeecg.modules.system.rule.CategoryCodeRule', '{\"pid\":\"\"}', 'admin', '2019-12-09 10:36:54', 'admin', '2019-12-06 11:11:31'); +INSERT INTO `sys_fill_rule` VALUES ('1260134137920090113', '订单流水号', 'shop_order_num', 'org.jeecg.modules.online.cgform.rule.OrderNumberRule', '{}', 'admin', '2020-12-07 18:29:50', 'admin', '2020-05-12 17:06:05'); + +-- ---------------------------- +-- Table structure for sys_gateway_route +-- ---------------------------- +DROP TABLE IF EXISTS `sys_gateway_route`; +CREATE TABLE `sys_gateway_route` ( + `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `router_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路由ID', + `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '服务名', + `uri` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '服务地址', + `predicates` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '断言', + `filters` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '过滤器', + `retryable` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否重试:0-否 1-是', + `strip_prefix` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否忽略前缀0-否 1-是', + `persistable` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否为保留数据:0-否 1-是', + `show_api` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否在接口文档中展示:0-否 1-是', + `status` decimal(11, 0) NULL DEFAULT NULL COMMENT '状态:0-无效 1-有效', + `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期', + `sys_org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属部门' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_gateway_route +-- ---------------------------- +INSERT INTO `sys_gateway_route` VALUES ('1331051599401857026', 'jeecg-demo-websocket', 'jeecg-demo-websocket', 'lb:ws://jeecg-demo', '[{\"args\":[\"/vxeSocket/**\"],\"name\":\"Path\"}]', '[]', NULL, NULL, NULL, NULL, 1, 'admin', '2020-11-24 09:46:46', NULL, NULL, NULL); +INSERT INTO `sys_gateway_route` VALUES ('jeecg-cloud-websocket', 'jeecg-system-websocket', 'jeecg-system-websocket', 'lb:ws://jeecg-system', '[{\"args\":[\"/websocket/**\",\"/eoaSocket/**\",\"/newsWebsocket/**\"],\"name\":\"Path\"}]', '[]', NULL, NULL, NULL, NULL, 1, 'admin', '2020-11-16 19:41:51', NULL, NULL, NULL); +INSERT INTO `sys_gateway_route` VALUES ('jeecg-demo', 'jeecg-demo', 'jeecg-demo', 'lb://jeecg-demo', '[{\"args\":[\"/mock/**\",\"/test/**\",\"/bigscreen/template1/**\",\"/bigscreen/template2/**\"],\"name\":\"Path\"}]', '[]', NULL, NULL, NULL, NULL, 1, 'admin', '2020-11-16 19:41:51', NULL, NULL, NULL); +INSERT INTO `sys_gateway_route` VALUES ('jeecg-system', 'jeecg-system', 'jeecg-system', 'lb://jeecg-system', '[{\"args\":[\"/sys/**\",\"/eoa/**\",\"/joa/**\",\"/online/**\",\"/bigscreen/**\",\"/jmreport/**\",\"/desform/**\",\"/process/**\",\"/act/**\",\"/plug-in/***/\",\"/druid/**\",\"/generic/**\"],\"name\":\"Path\"}]', '[]', NULL, NULL, NULL, NULL, 1, 'admin', '2020-11-16 19:41:51', NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_log +-- ---------------------------- +DROP TABLE IF EXISTS `sys_log`; +CREATE TABLE `sys_log` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `log_type` decimal(11, 0) NULL DEFAULT NULL COMMENT '日志类型(1登录日志,2操作日志)', + `log_content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '日志内容', + `operate_type` decimal(11, 0) NULL DEFAULT NULL COMMENT '操作类型', + `userid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作用户账号', + `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作用户名称', + `ip` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'IP', + `method` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '请求java方法', + `request_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求路径', + `request_param` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '请求参数', + `request_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求类型', + `cost_time` decimal(20, 0) NULL DEFAULT NULL COMMENT '耗时', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + INDEX `idx_sl_create_time`(`create_time`) USING BTREE, + INDEX `idx_sl_log_type`(`log_type`) USING BTREE, + INDEX `idx_sl_operate_type`(`operate_type`) USING BTREE, + INDEX `idx_sl_userid`(`userid`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统日志表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_permission +-- ---------------------------- +DROP TABLE IF EXISTS `sys_permission`; +CREATE TABLE `sys_permission` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id', + `parent_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父id', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单标题', + `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路径', + `component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件', + `component_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件名字', + `redirect` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '一级菜单跳转地址', + `menu_type` decimal(11, 0) NULL DEFAULT NULL COMMENT '菜单类型(0:一级菜单; 1:子菜单:2:按钮权限)', + `perms` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单权限编码', + `perms_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限策略1显示2禁用', + `sort_no` decimal(8, 2) NULL DEFAULT NULL COMMENT '菜单排序', + `always_show` decimal(4, 0) NULL DEFAULT NULL COMMENT '聚合子路由: 1是0否', + `icon` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单图标', + `is_route` decimal(4, 0) NULL DEFAULT NULL COMMENT '是否路由菜单: 0:不是 1:是(默认值1)', + `is_leaf` decimal(4, 0) NULL DEFAULT NULL COMMENT '是否叶子节点: 1:是 0:不是', + `keep_alive` decimal(4, 0) NULL DEFAULT NULL COMMENT '是否缓存该页面: 1:是 0:不是', + `hidden` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否隐藏路由: 0否,1是', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `del_flag` decimal(11, 0) NULL DEFAULT NULL COMMENT '删除状态 0正常 1已删除', + `rule_flag` decimal(11, 0) NULL DEFAULT NULL COMMENT '是否添加数据权限1是0否', + `status` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '按钮权限状态(0无效1有效)', + `internal_or_external` decimal(4, 0) NULL DEFAULT NULL COMMENT '外链菜单打开方式 0/内部打开 1/外部打开' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_permission +-- ---------------------------- +INSERT INTO `sys_permission` VALUES ('9502685863ab87f0ad1134142788a385', NULL, '首页', '/dashboard/analysis', 'dashboard/Analysis', NULL, NULL, 0, NULL, NULL, 0.00, 0, 'home', 1, 1, NULL, 0, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2019-03-29 11:04:13', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('97c8629abc7848eccdb6d77c24bb3ebb', '700b7f95165c46cc7a78bf227aa8fed3', '磁盘监控', '/monitor/Disk', 'modules/monitor/DiskMonitoring', NULL, NULL, 1, NULL, NULL, 6.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-04-25 14:30:06', 'admin', '2019-05-05 14:37:14', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('9cb91b8851db0cf7b19d7ecc2a8193dd', '1939e035e803a99ceecb6f5563570fb2', '我的任务表单', '/modules/bpm/task/form/FormModule', 'modules/bpm/task/form/FormModule', NULL, NULL, 1, NULL, NULL, 1.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-03-08 16:49:05', 'admin', '2019-03-08 18:37:56', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('b1cb0a3fedf7ed0e4653cb5a229837ee', '08e6b9dc3c04489c8e1ff2ce6f105aa4', '定时任务', '/isystem/QuartzJobList', 'system/QuartzJobList', NULL, NULL, 1, NULL, NULL, 1.00, 0, NULL, 1, 1, 0, 0, NULL, NULL, '2019-01-03 09:38:52', 'admin', '2020-09-09 14:48:16', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('b6bcee2ccc854052d3cc3e9c96d90197', '71102b3b87fb07e5527bbd2c530dd90a', '加班申请', '/modules/extbpm/joa/JoaOvertimeList', 'modules/extbpm/joa/JoaOvertimeList', NULL, NULL, 1, NULL, NULL, 1.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-04-03 15:33:10', 'admin', '2019-04-03 15:34:48', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('d07a2c87a451434c99ab06296727ec4f', '700b7f95165c46cc7a78bf227aa8fed3', 'JVM信息', '/monitor/JvmInfo', 'modules/monitor/JvmInfo', NULL, NULL, 1, NULL, NULL, 4.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-04-01 23:07:48', 'admin', '2019-04-02 11:37:16', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('d7d6e2e4e2934f2c9385a623fd98c6f3', NULL, '系统管理', '/isystem', 'layouts/RouteView', NULL, NULL, 0, NULL, NULL, 7.00, 0, 'setting', 1, 0, 0, 0, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2021-07-14 01:50:27', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('e41b69c57a941a3bbcce45032fe57605', '', '在线开发', '/online', 'layouts/RouteView', NULL, NULL, 0, NULL, NULL, 6.00, 0, 'cloud', 1, 0, 0, 0, NULL, 'admin', '2019-03-08 10:43:10', 'ceshi', '2021-12-15 22:21:51', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('024f1fd1283dc632458976463d8984e1', '700b7f95165c46cc7a78bf227aa8fed3', 'Tomcat信息', '/monitor/TomcatInfo', 'modules/monitor/TomcatInfo', NULL, NULL, 1, NULL, NULL, 4.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-04-02 09:44:29', 'admin', '2019-05-07 15:19:10', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('08e6b9dc3c04489c8e1ff2ce6f105aa4', NULL, '系统监控', '/dashboard3', 'layouts/RouteView', NULL, NULL, 0, NULL, NULL, 6.00, 0, 'dashboard', 1, 0, 0, 1, NULL, NULL, '2018-12-25 20:34:38', 'ceshi', '2021-10-14 15:05:03', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('109c78a583d4693ce2f16551b7786786', 'e41b69c57a941a3bbcce45032fe57605', 'Online报表配置', '/online/cgreport', 'modules/online/cgreport/OnlCgreportHeadList', NULL, NULL, 1, NULL, NULL, 2.00, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2019-03-08 10:51:07', 'ceshi', '2021-12-15 22:21:31', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('1415139394194399233', NULL, '文件管理', '/km/filemanagement', 'layouts/RouteView', NULL, NULL, 0, NULL, '1', 1.00, 0, 'folder', 1, 0, 0, 0, NULL, 'admin', '2021-07-13 21:41:38', 'admin', '2021-07-14 01:40:06', 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1415145872468893697', '1415139394194399233', '草稿文件上传', '/km/filemanagement/draftslist', 'km/filemanagement/DraftsList', NULL, NULL, 1, NULL, '1', 1.00, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2021-07-13 22:07:23', 'admin', '2022-03-16 20:18:22', 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1415156984451063809', NULL, '配置管理', '/km/datasetting', 'layouts/RouteView', NULL, NULL, 0, NULL, '1', 2.00, 0, 'cluster', 1, 0, 0, 0, NULL, 'admin', '2021-07-13 22:51:32', 'admin', '2021-07-29 17:28:49', 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1415201088958537730', '1415139394194399233', '待审核文件', '/km/filemanagement/pendingreviewlist', 'km/filemanagement/PendingReviewList', NULL, NULL, 1, NULL, '1', 2.00, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2021-07-14 01:46:47', 'ceshi', '2021-10-14 15:17:42', 0, 1, '1', 0); +INSERT INTO `sys_permission` VALUES ('1415206488843919361', '1415139394194399233', '已审核文件', '/km/filemanagement/auditedlist', 'km/filemanagement/AuditedList', NULL, NULL, 1, NULL, '1', 3.00, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2021-07-14 02:08:15', 'admin', '2021-10-09 20:20:35', 0, 1, '1', 0); +INSERT INTO `sys_permission` VALUES ('1415216128377921537', '1415156984451063809', '知识专题定义', '/km/datasetting/projectdefinitionlist', 'km/datasetting/ProjectDefinitionList', NULL, NULL, 1, NULL, '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2021-07-14 02:46:33', NULL, NULL, 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1415277817119023106', '1415156984451063809', '文档属性定义', '/km/datasetting/dictlist', 'km/datasetting/DictList', NULL, NULL, 1, NULL, '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2021-07-14 06:51:41', 'admin', '2021-07-29 17:28:22', 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1419574496959193090', '1415156984451063809', '系统参数', '/km/datasetting/KmSysConfigList', 'km/datasetting/KmSysConfigList', NULL, NULL, 1, NULL, '1', 3.00, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2021-07-26 03:25:09', NULL, NULL, 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1420569168296886273', '1420569665158332418', '文档操作记录', '/online/cgreport/1420565897964433409', 'modules/online/cgreport/auto/OnlCgreportAutoList', NULL, NULL, 1, NULL, '1', 1.00, 0, NULL, 0, 1, 0, 0, NULL, 'admin', '2021-07-29 10:17:37', 'ceshi', '2021-10-14 23:30:58', 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1420569665158332418', NULL, '日志', '/layouts/RouteView', 'layouts/RouteView', NULL, NULL, 0, NULL, '1', 1.80, 0, 'diff', 1, 0, 0, 0, NULL, 'admin', '2021-07-29 10:19:36', 'admin', '2021-08-04 17:04:21', 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('1422846497589129218', '1415139394194399233', '文件统计', '/km/filemanagement/FileStatisticsList', 'km/filemanagement/FileStatisticsList', NULL, NULL, 1, NULL, '1', 4.00, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2021-08-04 17:06:55', 'ceshi', '2021-10-14 18:01:35', 0, 0, '1', 0); +INSERT INTO `sys_permission` VALUES ('190c2b43bec6a5f7a4194a85db67d96a', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '角色管理', '/isystem/roleUserList', 'system/RoleUserList', NULL, NULL, 1, NULL, NULL, 1.20, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2019-04-17 15:13:56', 'admin', '2019-12-25 09:36:31', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('3f915b2769fc80648e92d04e84ca059d', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '用户管理', '/isystem/user', 'system/UserList', NULL, NULL, 1, NULL, NULL, 1.10, 0, NULL, 1, 1, 0, 0, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2019-12-25 09:36:24', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('45c966826eeff4c99b8f8ebfe74511fc', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '部门管理', '/isystem/depart', 'system/DepartList', NULL, NULL, 1, NULL, NULL, 1.40, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2019-01-29 18:47:40', 'admin', '2019-12-25 09:36:47', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('54dd5457a3190740005c1bfec55b1c34', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '菜单管理', '/isystem/permission', 'system/PermissionList', NULL, NULL, 1, NULL, NULL, 1.30, 0, NULL, 1, 1, 0, 0, NULL, NULL, '2018-12-25 20:34:38', 'admin', '2019-12-25 09:36:39', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('58857ff846e61794c69208e9d3a85466', '1420569665158332418', '系统日志', '/isystem/log', 'system/LogList', NULL, NULL, 1, NULL, NULL, 2.00, 0, NULL, 1, 1, 0, 0, NULL, NULL, '2018-12-26 10:11:18', 'admin', '2021-07-29 10:20:23', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('700b7f95165c46cc7a78bf227aa8fed3', '08e6b9dc3c04489c8e1ff2ce6f105aa4', '性能监控', '/monitor', 'layouts/RouteView', NULL, NULL, 1, NULL, NULL, 3.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2019-04-02 11:34:34', 'admin', '2020-09-09 14:48:51', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('841057b8a1bef8f6b4b20f9a618a7fa6', '08e6b9dc3c04489c8e1ff2ce6f105aa4', '数据日志', '/sys/dataLog-list', 'system/DataLogList', NULL, NULL, 1, NULL, NULL, 2.10, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2019-03-11 19:26:49', 'admin', '2020-09-09 14:48:32', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('8b3bff2eee6f1939147f5c68292a1642', '700b7f95165c46cc7a78bf227aa8fed3', '服务器信息', '/monitor/SystemInfo', 'modules/monitor/SystemInfo', NULL, NULL, 1, NULL, NULL, 4.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-04-02 11:39:19', 'admin', '2019-04-02 15:40:02', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('8d1ebd663688965f1fd86a2f0ead3416', '700b7f95165c46cc7a78bf227aa8fed3', 'Redis监控', '/monitor/redis/info', 'modules/monitor/RedisInfo', NULL, NULL, 1, NULL, NULL, 1.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-04-02 13:11:33', 'admin', '2019-05-07 15:18:54', 0, 0, NULL, NULL); +INSERT INTO `sys_permission` VALUES ('9fe26464838de2ea5e90f2367e35efa0', 'e41b69c57a941a3bbcce45032fe57605', 'AUTO在线报表', '/online/cgreport/:code', 'modules/online/cgreport/auto/OnlCgreportAutoList', 'onlineAutoList', NULL, 1, NULL, NULL, 9.00, 0, NULL, 1, 1, 0, 1, NULL, 'admin', '2019-03-12 11:06:48', 'ceshi', '2021-12-15 22:21:35', 0, 0, NULL, 0); +INSERT INTO `sys_permission` VALUES ('1453933027082489858', '1415139394194399233', '收藏夹', '/km/filemanagement/KmDocFavouriteList', 'km/filemanagement/KmDocFavouriteList', NULL, NULL, 1, NULL, '1', 0.00, 0, NULL, 1, 1, 0, 0, NULL, 'ceshi', '2021-10-29 11:53:41', NULL, NULL, 0, NULL, '1', 0); +INSERT INTO `sys_permission` VALUES ('1456909004028821505', '1415139394194399233', '检索列表', '/km/search/DoSearch', 'km/search/DoSearch', NULL, NULL, 1, NULL, '1', 9.00, 0, NULL, 1, 0, 0, 1, NULL, 'ceshi', '2021-11-06 16:59:09', NULL, NULL, 0, NULL, '1', 0); +INSERT INTO `sys_permission` VALUES ('1456909292378832898', '1456909004028821505', '批量下载', '/km/search/DoSearch', NULL, NULL, NULL, 2, 'searchList:batchDownload', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'ceshi', '2021-11-06 17:00:18', NULL, NULL, 0, NULL, '1', 0); +INSERT INTO `sys_permission` VALUES ('fc810a2267dd183e4ef7c71cc60f4670', '700b7f95165c46cc7a78bf227aa8fed3', '请求追踪', '/monitor/HttpTrace', 'modules/monitor/HttpTrace', NULL, NULL, 1, NULL, NULL, 4.00, 0, NULL, 1, 1, NULL, 0, NULL, 'admin', '2019-04-02 09:46:19', 'admin', '2019-04-02 11:37:27', 0, 0, NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_permission_data_rule +-- ---------------------------- +DROP TABLE IF EXISTS `sys_permission_data_rule`; +CREATE TABLE `sys_permission_data_rule` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'ID', + `permission_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单ID', + `rule_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则名称', + `rule_column` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字段', + `rule_conditions` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '条件', + `rule_value` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '规则值', + `status` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限有效状态1有0否', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_permission_data_rule +-- ---------------------------- +INSERT INTO `sys_permission_data_rule` VALUES ('1446812832576593922', '1415206488843919361', '看归属部门数据', 'orgCode', 'USE_SQL_RULES', '(org_code like \'#{sys_org_code}%\' or org_code like \'A%\')', '1', '2021-10-09 20:20:34', 'admin', '2022-03-17 10:43:51', 'admin'); +INSERT INTO `sys_permission_data_rule` VALUES ('1448548552202784769', '1415201088958537730', '看归属部门的数据', 'orgCode', 'USE_SQL_RULES', '(org_code like \'#{sys_org_code}%\' or org_code like \'A02%\')', '1', '2021-10-14 15:17:42', 'ceshi', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('40283181614231d401614234fe670003', '40283181614231d401614232cd1c0001', 'createBy', 'createBy', '=', '#{sys_user_code}', '1', '2018-01-29 21:57:04', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('4028318161424e730161424fca6f0004', '4028318161424e730161424f61510002', 'createBy', 'createBy', '=', '#{sys_user_code}', '1', '2018-01-29 22:26:20', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402880e6487e661a01487e732c020005', '402889fb486e848101486e93a7c80014', 'SYS_ORG_CODE', 'SYS_ORG_CODE', 'LIKE', '010201%', '1', '2014-09-16 20:32:30', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402880e6487e661a01487e8153ee0007', '402889fb486e848101486e93a7c80014', 'create_by', 'create_by', NULL, '#{SYS_USER_CODE}', '1', '2014-09-16 20:47:57', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402880ec5ddec439015ddf9225060038', '40288088481d019401481d2fcebf000d', '复杂关系', NULL, 'USE_SQL_RULES', 'name like \'%张%\' or age > 10', '1', NULL, NULL, '2017-08-14 15:10:25', 'demo'); +INSERT INTO `sys_permission_data_rule` VALUES ('402880ec5ddfdd26015ddfe3e0570011', '4028ab775dca0d1b015dca3fccb60016', '复杂sql配置', NULL, 'USE_SQL_RULES', 'table_name like \'%test%\' or is_tree = \'Y\'', '1', NULL, NULL, '2017-08-14 16:38:55', 'demo'); +INSERT INTO `sys_permission_data_rule` VALUES ('402880f25b1e2ac7015b1e5fdebc0012', '402880f25b1e2ac7015b1e5cdc340010', '只能看自己数据', 'create_by', '=', '#{sys_user_code}', '1', '2017-03-30 16:40:51', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402881875b19f141015b19f8125e0014', '40288088481d019401481d2fcebf000d', '可看下属业务数据', 'sys_org_code', 'LIKE', '#{sys_org_code}', '1', NULL, NULL, '2017-08-14 15:04:32', 'demo'); +INSERT INTO `sys_permission_data_rule` VALUES ('402881e45394d66901539500a4450001', '402881e54df73c73014df75ab670000f', 'sysCompanyCode', 'sysCompanyCode', '=', '#{SYS_COMPANY_CODE}', '1', '2016-03-21 01:09:21', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402881e45394d6690153950177cb0003', '402881e54df73c73014df75ab670000f', 'sysOrgCode', 'sysOrgCode', '=', '#{SYS_ORG_CODE}', '1', '2016-03-21 01:10:15', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402881e56266f43101626727aff60067', '402881e56266f43101626724eb730065', '销售自己看自己的数据', 'createBy', '=', '#{sys_user_code}', '1', '2018-03-27 19:11:16', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402881e56266f4310162672fb1a70082', '402881e56266f43101626724eb730065', '销售经理看所有下级数据', 'sysOrgCode', 'LIKE', '#{sys_org_code}', '1', '2018-03-27 19:20:01', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402881e56266f431016267387c9f0088', '402881e56266f43101626724eb730065', '只看金额大于1000的数据', 'money', '>=', '1000', '1', '2018-03-27 19:29:37', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402881f3650de25101650dfb5a3a0010', '402881e56266f4310162671d62050044', '22', NULL, 'USE_SQL_RULES', '22', '1', '2018-08-06 14:45:01', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402889fb486e848101486e913cd6000b', '402889fb486e848101486e8e2e8b0007', 'userName', 'userName', '=', 'admin', '1', '2014-09-13 18:31:25', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('402889fb486e848101486e98d20d0016', '402889fb486e848101486e93a7c80014', 'title', 'title', '=', '12', '1', NULL, NULL, '2014-09-13 22:18:22', 'scott'); +INSERT INTO `sys_permission_data_rule` VALUES ('402889fe47fcb29c0147fcb6b6220001', '8a8ab0b246dc81120146dc8180fe002b', '12', '12', '>', '12', '1', '2014-08-22 15:55:38', '8a8ab0b246dc81120146dc8181950052', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('4028ab775dca0d1b015dca4183530018', '4028ab775dca0d1b015dca3fccb60016', '表名限制', 'isDbSynch', '=', 'Y', '1', NULL, NULL, '2017-08-14 16:43:45', 'demo'); +INSERT INTO `sys_permission_data_rule` VALUES ('4028ef815595a881015595b0ccb60001', '40288088481d019401481d2fcebf000d', '限只能看自己', 'create_by', '=', '#{sys_user_code}', '1', NULL, NULL, '2017-08-14 15:03:56', 'demo'); +INSERT INTO `sys_permission_data_rule` VALUES ('4028ef81574ae99701574aed26530005', '4028ef81574ae99701574aeb97bd0003', '用户名', 'userName', '!=', 'admin', '1', '2016-09-21 12:07:18', 'admin', NULL, NULL); +INSERT INTO `sys_permission_data_rule` VALUES ('f852d85d47f224990147f2284c0c0005', NULL, '小于', 'test', '<=', '11', '1', '2014-08-20 14:43:52', '8a8ab0b246dc81120146dc8181950052', NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_position +-- ---------------------------- +DROP TABLE IF EXISTS `sys_position`; +CREATE TABLE `sys_position` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职务编码', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职务名称', + `post_rank` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职级', + `company_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '公司id', + `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `sys_org_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组织机构编码', + UNIQUE INDEX `uniq_position_code`(`code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_position +-- ---------------------------- +INSERT INTO `sys_position` VALUES ('1185040064792571906', 'devleader', '研发部经理', '2', NULL, 'admin', '2019-10-18 11:49:03', 'admin', '2020-02-23 22:55:42', 'A01'); +INSERT INTO `sys_position` VALUES ('1256485574212153345', '总经理', 'laozong', '5', NULL, 'admin', '2020-05-02 15:28:00', 'admin', '2020-05-02 15:28:03', '北京国炬公司'); + +-- ---------------------------- +-- Table structure for sys_quartz_job +-- ---------------------------- +DROP TABLE IF EXISTS `sys_quartz_job`; +CREATE TABLE `sys_quartz_job` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `del_flag` decimal(11, 0) NULL DEFAULT NULL COMMENT '删除状态', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `job_class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务类名', + `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'cron表达式', + `parameter` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `status` decimal(11, 0) NULL DEFAULT NULL COMMENT '状态 0正常 -1停止', + UNIQUE INDEX `uniq_job_class_name`(`job_class_name`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_quartz_job +-- ---------------------------- +INSERT INTO `sys_quartz_job` VALUES ('df26ecacf0f75d219d746750fe84bbee', NULL, NULL, 0, 'admin', '2020-05-02 15:40:35', 'org.jeecg.modules.quartz.job.SampleParamJob', '0/1 * * * * ?', 'scott', '带参测试 后台将每隔1秒执行输出日志', -1); +INSERT INTO `sys_quartz_job` VALUES ('a253cdfc811d69fa0efc70d052bc8128', 'admin', '2019-03-30 12:44:48', 0, 'admin', '2020-05-02 15:48:49', 'org.jeecg.modules.quartz.job.SampleJob', '0/1 * * * * ?', NULL, NULL, -1); +INSERT INTO `sys_quartz_job` VALUES ('5b3d2c087ad41aa755fc4f89697b01e7', 'admin', '2019-04-11 19:04:21', 0, 'admin', '2020-05-02 15:48:48', 'org.jeecg.modules.message.job.SendMsgJob', '0/50 * * * * ? *', NULL, NULL, -1); + +-- ---------------------------- +-- Table structure for sys_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role`; +CREATE TABLE `sys_role` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id', + `role_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名称', + `role_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色编码', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_role +-- ---------------------------- +INSERT INTO `sys_role` VALUES ('f6817f48af4fb3af11b9e8bf182f618b', '管理员', 'admin', '管理员', NULL, '2018-12-21 18:03:39', 'admin', '2022-01-06 14:36:13'); +INSERT INTO `sys_role` VALUES ('1501891096828817410', 'test', '9dcb6f3da512450db97043164d6894e6', NULL, 'ceshi', '2022-03-10 20:01:56', NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_role_permission +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role_permission`; +CREATE TABLE `sys_role_permission` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `role_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色id', + `permission_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限id', + `data_rule_ids` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '数据权限ids', + `operate_date` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', + `operate_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作ip' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色权限表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_role_permission +-- ---------------------------- +INSERT INTO `sys_role_permission` VALUES ('1e47db875601fd97723254046b5bba90', 'f6817f48af4fb3af11b9e8bf182f618b', 'baf16b7174bd821b6bab23fa9abb200d', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('2779cdea8367fff37db26a42c1a1f531', 'f6817f48af4fb3af11b9e8bf182f618b', 'fef097f3903caf3a3c3a6efa8de43fbb', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('3de2a60c7e42a521fecf6fcc5cb54978', 'f6817f48af4fb3af11b9e8bf182f618b', '2d83d62bd2544b8994c8f38cf17b0ddf', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('6daddafacd7eccb91309530c17c5855d', 'f6817f48af4fb3af11b9e8bf182f618b', 'edfa74d66e8ea63ea432c2910837b150', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('7413acf23b56c906aedb5a36fb75bd3a', 'f6817f48af4fb3af11b9e8bf182f618b', 'a4fc7b64b01a224da066bb16230f9c5a', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('4204f91fb61911ba8ce40afa7c02369f', 'f6817f48af4fb3af11b9e8bf182f618b', '3f915b2769fc80648e92d04e84ca059d', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('4dab5a06acc8ef3297889872caa74747', 'f6817f48af4fb3af11b9e8bf182f618b', 'ffb423d25cc59dcd0532213c4a518261', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('4f254549d9498f06f4cc9b23f3e2c070', 'f6817f48af4fb3af11b9e8bf182f618b', '93d5cfb4448f11e9916698e7f462b4b6', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('504e326de3f03562cdd186748b48a8c7', 'f6817f48af4fb3af11b9e8bf182f618b', '027aee69baee98a0ed2e01806e89c891', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('5de6871fadb4fe1cdd28989da0126b07', 'f6817f48af4fb3af11b9e8bf182f618b', 'a400e4f4d54f79bf5ce160a3432231af', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('1209423580355481602', 'f6817f48af4fb3af11b9e8bf182f618b', '190c2b43bec6a5f7a4194a85db67d96a', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('1269526122208522241', 'f6817f48af4fb3af11b9e8bf182f618b', '1267412134208319489', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('1415139448871346178', 'f6817f48af4fb3af11b9e8bf182f618b', '1415139394194399233', NULL, '2021-07-13 21:41:51', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1415145981671792642', 'f6817f48af4fb3af11b9e8bf182f618b', '1415145872468893697', NULL, '2021-07-13 22:07:49', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1415157254522298370', 'f6817f48af4fb3af11b9e8bf182f618b', '1415156984451063809', NULL, '2021-07-13 22:52:36', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1415201137276919810', 'f6817f48af4fb3af11b9e8bf182f618b', '1415201088958537730', NULL, '2021-07-14 01:46:59', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1415206549682298882', 'f6817f48af4fb3af11b9e8bf182f618b', '1415206488843919361', '', '2021-07-14 02:08:29', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1415216174586568705', 'f6817f48af4fb3af11b9e8bf182f618b', '1415216128377921537', NULL, '2021-07-14 02:46:44', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1415277853504610305', 'f6817f48af4fb3af11b9e8bf182f618b', '1415277817119023106', NULL, '2021-07-14 06:51:50', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1419574538910621698', 'f6817f48af4fb3af11b9e8bf182f618b', '1419574496959193090', NULL, '2021-07-26 03:25:19', '192.168.0.103'); +INSERT INTO `sys_role_permission` VALUES ('1420569931790237697', 'f6817f48af4fb3af11b9e8bf182f618b', '1420569168296886273', NULL, '2021-07-29 10:20:39', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1420570298724728833', 'f6817f48af4fb3af11b9e8bf182f618b', '1420569665158332418', NULL, '2021-07-29 10:22:07', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1422846634373771266', 'f6817f48af4fb3af11b9e8bf182f618b', '1422846497589129218', NULL, '2021-08-04 17:07:27', '192.168.0.104'); +INSERT INTO `sys_role_permission` VALUES ('cf1feb1bf69eafc982295ad6c9c8d698', 'f6817f48af4fb3af11b9e8bf182f618b', 'a2b11669e98c5fe54a53c3e3c4f35d14', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('d37ad568e26f46ed0feca227aa9c2ffa', 'f6817f48af4fb3af11b9e8bf182f618b', '9502685863ab87f0ad1134142788a385', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('dbc5dd836d45c5bc7bc94b22596ab956', 'f6817f48af4fb3af11b9e8bf182f618b', '1939e035e803a99ceecb6f5563570fb2', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('dc83bb13c0e8c930e79d28b2db26f01f', 'f6817f48af4fb3af11b9e8bf182f618b', '63b551e81c5956d5c861593d366d8c57', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('dc8fd3f79bd85bd832608b42167a1c71', 'f6817f48af4fb3af11b9e8bf182f618b', '91c23960fab49335831cf43d820b0a61', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('de82e89b8b60a3ea99be5348f565c240', 'f6817f48af4fb3af11b9e8bf182f618b', '56ca78fe0f22d815fabc793461af67b8', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('ec846a3f85fdb6813e515be71f11b331', 'f6817f48af4fb3af11b9e8bf182f618b', '732d48f8e0abe99fe6a23d18a3171cd1', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('ecdd72fe694e6bba9c1d9fc925ee79de', 'f6817f48af4fb3af11b9e8bf182f618b', '45c966826eeff4c99b8f8ebfe74511fc', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('f177acac0276329dc66af0c9ad30558a', 'f6817f48af4fb3af11b9e8bf182f618b', 'c2c356bf4ddd29975347a7047a062440', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('fafe73c4448b977fe42880a6750c3ee8', 'f6817f48af4fb3af11b9e8bf182f618b', '9cb91b8851db0cf7b19d7ecc2a8193dd', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('1453933071680524290', 'f6817f48af4fb3af11b9e8bf182f618b', '1453933027082489858', NULL, '2021-10-29 11:53:51', '192.168.0.102'); +INSERT INTO `sys_role_permission` VALUES ('84eac2f113c23737128fb099d1d1da89', 'f6817f48af4fb3af11b9e8bf182f618b', '03dc3d93261dda19fc86dd7ca486c6cf', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('86060e2867a5049d8a80d9fe5d8bc28b', 'f6817f48af4fb3af11b9e8bf182f618b', '765dd244f37b804e3d00f475fd56149b', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('1458355149641641985', 'f6817f48af4fb3af11b9e8bf182f618b', '1456909292378832898', NULL, '2021-11-10 16:45:37', '116.23.216.197'); +INSERT INTO `sys_role_permission` VALUES ('980171fda43adfe24840959b1d048d4d', 'f6817f48af4fb3af11b9e8bf182f618b', 'd7d6e2e4e2934f2c9385a623fd98c6f3', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('a034ed7c38c996b880d3e78f586fe0ae', 'f6817f48af4fb3af11b9e8bf182f618b', 'c89018ea6286e852b424466fd92a2ffc', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('acacce4417e5d7f96a9c3be2ded5b4be', 'f6817f48af4fb3af11b9e8bf182f618b', 'f9d3f4f27653a71c52faa9fb8070fbe7', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('af60ac8fafd807ed6b6b354613b9ccbc', 'f6817f48af4fb3af11b9e8bf182f618b', '58857ff846e61794c69208e9d3a85466', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('bea2986432079d89203da888d99b3f16', 'f6817f48af4fb3af11b9e8bf182f618b', '54dd5457a3190740005c1bfec55b1c34', NULL, NULL, NULL); +INSERT INTO `sys_role_permission` VALUES ('1479012049120796674', 'f6817f48af4fb3af11b9e8bf182f618b', '1456909004028821505', NULL, '2022-01-06 16:48:46', '0:0:0:0:0:0:0:1'); +INSERT INTO `sys_role_permission` VALUES ('1501891384792952834', '1501891096828817410', '9502685863ab87f0ad1134142788a385', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384809730049', '1501891096828817410', '1415139394194399233', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384809730050', '1501891096828817410', '1453933027082489858', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384809730051', '1501891096828817410', '1415201088958537730', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384809730052', '1501891096828817410', '1415145872468893697', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384822312962', '1501891096828817410', '1415206488843919361', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701569', '1501891096828817410', '1422846497589129218', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701570', '1501891096828817410', '1456909004028821505', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701571', '1501891096828817410', '1456909292378832898', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701572', '1501891096828817410', '1420569665158332418', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701573', '1501891096828817410', '1420569168296886273', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701574', '1501891096828817410', '58857ff846e61794c69208e9d3a85466', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701575', '1501891096828817410', '1415156984451063809', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701576', '1501891096828817410', '1415277817119023106', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701577', '1501891096828817410', '1415216128377921537', NULL, '2022-03-10 20:03:05', '116.23.218.77'); +INSERT INTO `sys_role_permission` VALUES ('1501891384830701578', '1501891096828817410', '1419574496959193090', NULL, '2022-03-10 20:03:05', '116.23.218.77'); + +-- ---------------------------- +-- Table structure for sys_tenant +-- ---------------------------- +DROP TABLE IF EXISTS `sys_tenant`; +CREATE TABLE `sys_tenant` ( + `id` decimal(11, 0) NOT NULL COMMENT '租户编码', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '租户名称', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_by` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `begin_date` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', + `end_date` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', + `status` decimal(11, 0) NULL DEFAULT NULL COMMENT '状态 1正常 0冻结' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '多租户信息表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_tenant +-- ---------------------------- +INSERT INTO `sys_tenant` VALUES (1, '北京租户001', '2020-07-10 15:43:32', 'admin', NULL, NULL, 1); + +-- ---------------------------- +-- Table structure for sys_third_account +-- ---------------------------- +DROP TABLE IF EXISTS `sys_third_account`; +CREATE TABLE `sys_third_account` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编号', + `sys_user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '第三方登录id', + `third_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录来源', + `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像', + `status` decimal(4, 0) NULL DEFAULT NULL COMMENT '状态(1-正常,2-冻结)', + `del_flag` decimal(4, 0) NULL DEFAULT NULL COMMENT '删除状态(0-正常,1-已删除)', + `realname` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '真实姓名', + `third_user_uuid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '第三方账号', + `third_user_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '第三方app用户账号' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_user +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user`; +CREATE TABLE `sys_user` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id', + `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录账号', + `realname` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '真实姓名', + `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', + `salt` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'md5密码盐', + `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像', + `birthday` datetime(0) NULL DEFAULT NULL COMMENT '生日', + `sex` decimal(4, 0) NULL DEFAULT NULL COMMENT '性别(0-默认未知,1-男,2-女)', + `email` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电子邮件', + `phone` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电话', + `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '机构编码', + `status` decimal(4, 0) NULL DEFAULT NULL COMMENT '性别(1-正常,2-冻结)', + `del_flag` decimal(4, 0) NULL DEFAULT NULL COMMENT '删除状态(0-正常,1-已删除)', + `third_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '第三方登录的唯一标识', + `third_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '第三方类型', + `activiti_sync` decimal(4, 0) NULL DEFAULT NULL COMMENT '同步工作流引擎(1-同步,0-不同步)', + `work_no` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工号,唯一键', + `post` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职务,关联职务表', + `telephone` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '座机号', + `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `user_identity` decimal(4, 0) NULL DEFAULT NULL COMMENT '身份(1普通成员 2上级)', + `depart_ids` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '负责部门', + `rel_tenant_ids` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识', + `client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '设备ID' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_user +-- ---------------------------- +INSERT INTO `sys_user` VALUES ('e9ca23d68d884d4ebb19d07889727dae', 'admin', '管理员', 'cb362cfeefbf3d8d', 'RCGTeGiH', '', '2018-12-05 00:00:00', 1, 'jeecg@163.com', '18611111111', 'A01', 1, 0, NULL, NULL, 1, '00001', '总经理', NULL, NULL, '2019-06-21 17:54:10', 'admin', '2021-10-09 21:03:21', 2, 'c6d7cb4deeac411cb3384b1b31278596', NULL, NULL); +INSERT INTO `sys_user` VALUES ('1448560127207559169', 'ceshi', '测试', '8480d522fcf8d62c', 'bslhULTz', NULL, NULL, NULL, NULL, NULL, 'A01', 1, 0, 'bf4ff455bd3344e784cf2ba92ffee2e1', '1', NULL, NULL, NULL, NULL, NULL, '2021-10-14 16:03:41', 'ceshi', '2022-03-22 14:12:52', NULL, NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_user_agent +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_agent`; +CREATE TABLE `sys_user_agent` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '序号', + `user_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名', + `agent_user_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '代理人用户名', + `start_time` datetime(0) NULL DEFAULT NULL COMMENT '代理开始时间', + `end_time` datetime(0) NULL DEFAULT NULL COMMENT '代理结束时间', + `status` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态0无效1有效', + `create_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称', + `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人登录名称', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期', + `update_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人名称', + `update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人登录名称', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期', + `sys_org_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属部门', + `sys_company_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属公司', + UNIQUE INDEX `uk_sug_user_name`(`user_name`) USING BTREE, + INDEX `idx_sug_end_time`(`end_time`) USING BTREE, + INDEX `idx_sug_start_time`(`start_time`) USING BTREE, + INDEX `idx_sug_status`(`status`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户代理人设置' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_user_depart +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_depart`; +CREATE TABLE `sys_user_depart` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id', + `user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id', + `dep_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门id' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_user_depart +-- ---------------------------- +INSERT INTO `sys_user_depart` VALUES ('1506108597582270465', '1448560127207559169', 'f79b7d5a99b1442c876858a6961cb1fb'); + +-- ---------------------------- +-- Table structure for sys_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_role`; +CREATE TABLE `sys_user_role` ( + `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id', + `user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id', + `role_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色id' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户角色表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_user_role +-- ---------------------------- +INSERT INTO `sys_user_role` VALUES ('1446823599141052418', 'e9ca23d68d884d4ebb19d07889727dae', 'f6817f48af4fb3af11b9e8bf182f618b'); +INSERT INTO `sys_user_role` VALUES ('1446823599141052418', 'f6817f48af4fb3af11b9e8bf182f618b', 'f6817f48af4fb3af11b9e8bf182f618b'); +INSERT INTO `sys_user_role` VALUES ('1506108597502578689', '1448560127207559169', '1501891096828817410'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/Docs/科亿知识库.pdf b/Docs/科亿知识库.pdf new file mode 100644 index 0000000..ad3a0e1 Binary files /dev/null and b/Docs/科亿知识库.pdf differ diff --git a/Docs/科亿知识库操作手册.pdf b/Docs/科亿知识库操作手册.pdf new file mode 100644 index 0000000..04139bb Binary files /dev/null and b/Docs/科亿知识库操作手册.pdf differ diff --git a/ES安装.MD b/ES安装.MD new file mode 100644 index 0000000..a151d25 --- /dev/null +++ b/ES安装.MD @@ -0,0 +1,72 @@ +**支持Linux和Windows下运行,推荐CentOS 7 + +- # CentOS 7 + +## 安装ElasticSearch +cd /usr/local +wget http://dl.elasticsearch.cn/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz +tar zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz + +## 创建用户elasticsearch + adduser elasticsearch + passwd elasticsearch (yourPWD) + chown -R elasticsearch elasticsearch-7.6.1 + +## 配置ES + cd /usr/local/elasticsearch-7.6.1/config + vi elasticsearch.yml 增加配置: + xpack.security.enabled: true + discovery.type: single-node + network.host: 0.0.0.0 + indices.query.bool.max_clause_count: 102400 + 更改Elasticsearch最大内存大小 + vi /usr/local/elasticsearch-7.6.1/config/jvm.options + -Xms8g + -Xmx8g + vi /etc/sysctl.conf + 增加配置vm.max_map_count=262144 + sysctl -p +   执行命令sysctl -p生效 + +## 安装ik分词器(可能需要科学上网) +cd /usr/local/elasticsearch-7.6.1/bin +./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch-analysis-ik-7.6.1.zip + +## 启动es: + cd /usr/local/elasticsearch-7.6.1/bin + su elasticsearch + ./elasticsearch -d + +## 创建elastic 的Elastic用户 +./elasticsearch-setup-passwords auto +拷贝用户elastic的密码,配置到application.yml文件 + +- # **Windows环境安装** + +## 安装ElasticSearch +下载 [ES7.6.1安装包](http://dl.elasticsearch.cn/elasticsearch/elasticsearch-7.6.1-windows-x86_64.zip), +解压 zip文件 到ES安装路径,如 C:\software\elasticsearch-7.6.1 + +## 配置ES + cd C:\software\elasticsearch-7.6.1\config +### 编辑 elasticsearch.yml 增加配置: + xpack.security.enabled: true + discovery.type: single-node + network.host: 0.0.0.0 + indices.query.bool.max_clause_count: 102400 + 更改Elasticsearch最大内存大小 +### 编辑/jvm.options + -Xms8g + -Xmx8g + +## 安装ik分词器(可能需要科学上网) +下载 [IK分词器](https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch-analysis-ik-7.6.1.zip), +解压到 C:\software\elasticsearch-7.6.1\config\analysis-ik + +## 启动es: + cd C:\software\elasticsearch-7.6.1\config\bin + 执行 elasticsearch.bat + +## 创建elastic 的Elastic用户 +执行 elasticsearch-setup-passwords.bat auto +拷贝用户elastic的密码,配置到application.yml文件 diff --git a/README.md b/README.md new file mode 100644 index 0000000..37ec38c --- /dev/null +++ b/README.md @@ -0,0 +1,161 @@ + +![KYKMS](http://www.kykms.cn/url/logo_keyi.png "科亿文档知识库管理系统") + +科亿知识库 KY KMS +=============== +当前最新版本: V0.0.1(发布日期:20220322) + +项目介绍: +----------------------------------- + +

基于常用文档的知识库管理系统

+ +科亿知识库 KY KMS 是一款面向常用文档的`文档型知识库管理系统`! + +在信息化时代,我们日常工作中产生大量的文档。同时,存储技术的进步,使得存储文件的成本越来越低。最终,几乎所有的文档,都被积累下来,这些文档,有些非常有价值,我们随时都可能需要调出某个历史文档。 + +我们积累下来的文档,是一笔巨大的财富,但文档越多,我们在其中找到我们所需要文档的时间成本越高,以至于我们常常面对大量的文档一筹莫展,就好像面前座立着一金山,但我们却不知道如何开采金子。 + +`科亿知识库宗旨是:` 文档简单整理,知识创造价值 + + +适用项目 +----------------------------------- +科亿知识库,可以应用在任何需要进行常用文档整理、分类、归集、检索的地方,尤其适合知识密集型单位/历史文档丰富的单位。 + + + + +交流互动 +----------------------------------- + +- 在线演示 : [http://www.kykms.cn:90](http://www.kykms.cn:90) +- 微信 : 1-7-7-0-2-0-7-4-0-5-4 +- QQ : 22247537 +- Mail : hnliuwx@tom.com + +为什么选择KY KMS? +----------------------------------- +![KY KMS](http://www.kykms.cn/url/advantage_kms.png) + + +技术架构: +----------------------------------- +#### 开发环境 +- 语言:Java 8 +- IDE(JAVA): IDEA / Eclipse安装lombok插件 +- IDE(前端): WebStorm 或者 IDEA +- 依赖管理:Maven +- 数据库:MySQL5.7+ & Oracle 11g & Sqlserver2017 +- 缓存:Redis +- Node Js: 10.0 + +- Npm: 5.6.0+ +- Yarn: 1.21.1+ + +#### 后端 +- 基础框架:Spring Boot 2.3.5.RELEASE +- 持久层框架:Mybatis-plus 3.4.1 +- 检索引擎:ElasticSearch 7.6.1 +- 文档处理与转换: Libre Office 7.1.4 +- 文本提取:Tika 1.17 +- 安全框架:Apache Shiro 1.7.0,Jwt 3.11.0 +- 数据库连接池:阿里巴巴Druid 1.1.22 +- 缓存框架:redis +- 日志打印:logback +- 其他:fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。 + + +#### 前端 + +- [Vue 2.6.10](https://cn.vuejs.org/),[Vuex](https://vuex.vuejs.org/zh/),[Vue Router](https://router.vuejs.org/zh/) +- [Axios](https://github.com/axios/axios) +- [ant-design-vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/) +- [webpack](https://www.webpackjs.com/),[yarn](https://yarnpkg.com/zh-Hans/) +- [vue-cropper](https://github.com/xyxiao001/vue-cropper) - 头像裁剪组件 +- [@antv/g2](https://antv.alipay.com/zh-cn/index.html) - Alipay AntV 数据可视化图表 +- [Viser-vue](https://viserjs.github.io/docs.html#/viser/guide/installation) - antv/g2 封装实现 +- eslint,[@vue/cli 3.2.1](https://cli.vuejs.org/zh/guide) + +### 功能模块 +``` +├─检索首页 +│ ├─普通检索 +│ ├─高级检索 +│ ├─文档预览 +│ ├─文档分类 +│ ├─知识专题 +│ ├─高频访问文档 +│ ├─热词统计 +│ ├─热门专题统计 +├─系统管理 +│ ├─用户管理 +│ ├─角色管理 +│ ├─菜单管理 +│ ├─权限设置(支持按钮权限、数据权限) +│ ├─表单权限(控制字段禁用、隐藏) +│ ├─部门管理 +├─文件管理 +│ ├─草稿文件上传 +│ ├─文档编辑 +│ ├─收藏夹 +│ ├─待审核文件 +│ ├─已审核文件 +│ ├─文件统计 +├─配置管理 +│ ├─知识专题定义 +│ ├─文档属性定义 +├─日志 +│ ├─文档操作记录 +│ ├─系统日志 +└─其他模块 + └─更多功能开发中。。 + +``` + +项目下载和运行 +---- +开发环境准备与运行,请参考:开发环境准备与运行.md +- 数据库脚本:db/km-mysql-5.7.sql +- 默认登录账号: admin/123456 + + +系统效果 +---- + +##### 公共检索 +检索首页 +![检索首页](http://www.kykms.cn/url/search_default.png) +检索结果 +![检索结果](http://www.kykms.cn/url/search_result.png) +高级检索 +![高级检索](http://www.kykms.cn/url/search_advance.png) +知识专题 +![知识专题](http://www.kykms.cn/url/topic.png) + + +##### 管理后台 +热词统计 +![](http://www.kykms.cn/url/home.png) +批量上传 +![](http://www.kykms.cn/url/upload.png) +编辑 +![知识专题](http://www.kykms.cn/url/edit.png) + + +附属文档 +---- +- [Ant Design Vue](https://www.antdv.com/docs/vue/introduce-cn) + + +特别鸣谢 +----------------------------------- +本项目采用Jeecg-boot开发框架,Jeecg-boot,一款优秀的后台管理快速开发框架,让你更专注于业务开发的实现。 +- JeecgBoot: [http://doc.jeecg.com](http://doc.jeecg.com) + + +## 捐赠 + +如果觉得还不错,请作者喝杯咖啡鼓励一下吧,敲代码不容易 ☺ +![](http://www.kykms.cn/url/QR_pay.jpg) + + diff --git a/ant-design-vue-jeecg/.dockerignore b/ant-design-vue-jeecg/.dockerignore new file mode 100644 index 0000000..59c9c55 --- /dev/null +++ b/ant-design-vue-jeecg/.dockerignore @@ -0,0 +1,23 @@ +docs +public +src +.dockerignore +.editorconfig +.eslintignore +.gitattributes +.gitignore +.prettierrc +babel.config.js +Dockerfile +idea.config.js +LICENSE +package.json +package-lock.json +README.md +vue.config.js +yarn +yarn.lock +yarn-error.log +.idea +.svn +node_modules \ No newline at end of file diff --git a/ant-design-vue-jeecg/.editorconfig b/ant-design-vue-jeecg/.editorconfig new file mode 100644 index 0000000..3e26fbb --- /dev/null +++ b/ant-design-vue-jeecg/.editorconfig @@ -0,0 +1,39 @@ +[*] +charset=utf-8 +end_of_line=crlf +insert_final_newline=false +indent_style=space +indent_size=2 + +[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}] +indent_style=space +indent_size=2 + +[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}] +indent_style=space +indent_size=2 + +[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}] +indent_style=space +indent_size=2 + +[*.svg] +indent_style=space +indent_size=2 + +[*.js.map] +indent_style=space +indent_size=2 + +[*.less] +indent_style=space +indent_size=2 + +[*.vue] +indent_style=space +indent_size=2 + +[{.analysis_options,*.yml,*.yaml}] +indent_style=space +indent_size=2 + diff --git a/ant-design-vue-jeecg/.env b/ant-design-vue-jeecg/.env new file mode 100644 index 0000000..d80886b --- /dev/null +++ b/ant-design-vue-jeecg/.env @@ -0,0 +1,3 @@ +NODE_ENV=development +VUE_APP_PLATFORM_NAME=科亿知识库 +VUE_APP_SSO=false \ No newline at end of file diff --git a/ant-design-vue-jeecg/.env.development b/ant-design-vue-jeecg/.env.development new file mode 100644 index 0000000..8a1b3ba --- /dev/null +++ b/ant-design-vue-jeecg/.env.development @@ -0,0 +1,4 @@ +NODE_ENV=development +VUE_APP_API_BASE_URL=http://localhost:9090/ky +VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas +VUE_APP_ONLINE_BASE_URL=http://localhost/onlinePreview \ No newline at end of file diff --git a/ant-design-vue-jeecg/.env.production b/ant-design-vue-jeecg/.env.production new file mode 100644 index 0000000..54d56dd --- /dev/null +++ b/ant-design-vue-jeecg/.env.production @@ -0,0 +1,4 @@ +NODE_ENV=production +VUE_APP_API_BASE_URL=http://172.16.2.47:8080/ky +VUE_APP_CAS_BASE_URL=http://localhost:8888/cas +VUE_APP_ONLINE_BASE_URL=http://localhost/onlinePreview \ No newline at end of file diff --git a/ant-design-vue-jeecg/.env.test b/ant-design-vue-jeecg/.env.test new file mode 100644 index 0000000..e48e030 --- /dev/null +++ b/ant-design-vue-jeecg/.env.test @@ -0,0 +1,4 @@ +NODE_ENV=test +VUE_APP_API_BASE_URL=http://119.29.145.199:8080/ky +VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas +VUE_APP_ONLINE_BASE_URL=http://localhost/onlinePreview \ No newline at end of file diff --git a/ant-design-vue-jeecg/.eslintignore b/ant-design-vue-jeecg/.eslintignore new file mode 100644 index 0000000..dbc8690 --- /dev/null +++ b/ant-design-vue-jeecg/.eslintignore @@ -0,0 +1 @@ +/src \ No newline at end of file diff --git a/ant-design-vue-jeecg/.gitattributes b/ant-design-vue-jeecg/.gitattributes new file mode 100644 index 0000000..e507319 --- /dev/null +++ b/ant-design-vue-jeecg/.gitattributes @@ -0,0 +1 @@ +public/* linguist-vendored \ No newline at end of file diff --git a/ant-design-vue-jeecg/.gitignore b/ant-design-vue-jeecg/.gitignore new file mode 100644 index 0000000..185e663 --- /dev/null +++ b/ant-design-vue-jeecg/.gitignore @@ -0,0 +1,21 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* diff --git a/ant-design-vue-jeecg/.prettierrc b/ant-design-vue-jeecg/.prettierrc new file mode 100644 index 0000000..cbe842a --- /dev/null +++ b/ant-design-vue-jeecg/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 120, + "semi": false, + "singleQuote": true +} diff --git a/ant-design-vue-jeecg/Dockerfile b/ant-design-vue-jeecg/Dockerfile new file mode 100644 index 0000000..13b8769 --- /dev/null +++ b/ant-design-vue-jeecg/Dockerfile @@ -0,0 +1,29 @@ +FROM nginx +MAINTAINER jeecgos@163.com +VOLUME /tmp +ENV LANG en_US.UTF-8 +RUN echo "server { \ + listen 80; \ + location ^~ /jeecg-boot { \ + proxy_pass http://jeecg-boot-system:8080/jeecg-boot/; \ + proxy_set_header Host jeecg-boot-system; \ + proxy_set_header X-Real-IP \$remote_addr; \ + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \ + } \ + #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \ + location / { \ + root /var/www/html/; \ + index index.html index.htm; \ + if (!-e \$request_filename) { \ + rewrite ^(.*)\$ /index.html?s=\$1 last; \ + break; \ + } \ + } \ + access_log /var/log/nginx/access.log ; \ + } " > /etc/nginx/conf.d/default.conf \ + && mkdir -p /var/www \ + && mkdir -p /var/www/html + +ADD dist/ /var/www/html/ +EXPOSE 80 +EXPOSE 443 \ No newline at end of file diff --git a/ant-design-vue-jeecg/LICENSE b/ant-design-vue-jeecg/LICENSE new file mode 100644 index 0000000..52e604c --- /dev/null +++ b/ant-design-vue-jeecg/LICENSE @@ -0,0 +1,21 @@ +GPL License + +Copyright (c) 2022 LiuWenxiong + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/ant-design-vue-jeecg/README.md b/ant-design-vue-jeecg/README.md new file mode 100644 index 0000000..eaf067c --- /dev/null +++ b/ant-design-vue-jeecg/README.md @@ -0,0 +1,50 @@ +科亿知识库 KY KMS +==== + +当前最新版本: V0.0.1(发布日期:20220322) + +Overview +---- + +基于 [Ant Design of Vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/) 实现的 Ant Design Pro Vue 版 +Jeecg-boot 的前端UI框架,采用前后端分离方案,提供强大代码生成器的低代码平台。 +前端页面代码和后端功能代码一键生成,不需要写任何代码,保持jeecg一贯的强大!! + + + +#### 前端技术 + +- 基础框架:[ant-design-vue](https://github.com/vueComponent/ant-design-vue) - Ant Design Of Vue 实现 +- JavaScript框架:Vue +- Webpack +- node +- yarn +- eslint +- @vue/cli 3.2.1 +- [vue-cropper](https://github.com/xyxiao001/vue-cropper) - 头像裁剪组件 +- [@antv/g2](https://antv.alipay.com/zh-cn/index.html) - Alipay AntV 数据可视化图表 +- [Viser-vue](https://viserjs.github.io/docs.html#/viser/guide/installation) - antv/g2 封装实现 + + + +附属文档 +---- +- [Ant Design Vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn) + +- [报表 viser-vue](https://viserjs.github.io/demo.html#/viser/bar/basic-bar) + +- [Vue](https://cn.vuejs.org/v2/guide) + +- [路由/菜单说明](https://github.com/zhangdaiscott/jeecg-boot/tree/master/ant-design-jeecg-vue/src/router/README.md) + +- [ANTD 默认配置项](https://github.com/zhangdaiscott/jeecg-boot/tree/master/ant-design-jeecg-vue/src/defaultSettings.js) + +- 其他待补充... + + +备注 +---- + +> @vue/cli 升级后,eslint 规则更新了。由于影响到全部 .vue 文件,需要逐个验证。既暂时关闭部分原本不验证的规则,后期维护时,在逐步修正这些 rules + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/babel.config.js b/ant-design-vue-jeecg/babel.config.js new file mode 100644 index 0000000..bef7ac4 --- /dev/null +++ b/ant-design-vue-jeecg/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + ['@vue/app', + { useBuiltIns: 'entry' }] + ] +} diff --git a/ant-design-vue-jeecg/idea.config.js b/ant-design-vue-jeecg/idea.config.js new file mode 100644 index 0000000..4d86bd9 --- /dev/null +++ b/ant-design-vue-jeecg/idea.config.js @@ -0,0 +1,24 @@ +'use strict' +const path = require('path') + +function resolve (dir) { + return path.join(__dirname, '.', dir) +} + +module.exports = { + context: path.resolve(__dirname, './'), + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'config': resolve('config'), + '@': resolve('src'), + '@views': resolve('src/views'), + '@comp': resolve('src/components'), + '@core': resolve('src/core'), + '@utils': resolve('src/utils'), + '@entry': resolve('src/entry'), + '@router': resolve('src/router'), + '@store': resolve('src/store') + } + }, +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/package.json b/ant-design-vue-jeecg/package.json new file mode 100644 index 0000000..52042bc --- /dev/null +++ b/ant-design-vue-jeecg/package.json @@ -0,0 +1,120 @@ +{ + "name": "vue-antd-jeecg", + "version": "2.4.5", + "private": true, + "scripts": { + "pre": "cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org ", + "serve:development": "vue-cli-service serve --mode development", + "build:test": "vue-cli-service build --mode test", + "build:production": "vue-cli-service build --mode production", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "serve:test": "vue-cli-service serve --mode test" + }, + "dependencies": { + "@antv/data-set": "^0.11.4", + "@jeecg/antd-online-mini": "git+https://gitee.com/kyxxjs/antd-online-mini.git", + "@tinymce/tinymce-vue": "^2.1.0", + "@toast-ui/editor": "^2.1.2", + "ant-design-vue": "^1.7.2", + "area-data": "^5.0.6", + "axios": "^0.18.0", + "clipboard": "^2.0.4", + "codemirror": "^5.46.0", + "cron-parser": "^2.10.0", + "dayjs": "^1.8.0", + "dom-align": "1.12.0", + "enquire.js": "^2.1.6", + "js-cookie": "^2.2.0", + "lodash.get": "^4.4.2", + "lodash.pick": "^4.4.0", + "md5": "^2.2.1", + "nprogress": "^0.2.0", + "tinymce": "^5.3.2", + "viser-vue": "^2.4.8", + "vue": "^2.6.10", + "vue-area-linkage": "^5.1.0", + "vue-cropper": "^0.5.4", + "vue-i18n": "^8.7.0", + "vue-loader": "^15.9.6", + "vue-ls": "^3.2.0", + "vue-photo-preview": "^1.1.3", + "vue-print-nb-jeecg": "^1.0.9", + "vue-router": "^3.0.1", + "vue-splitpane": "^1.0.4", + "vuedraggable": "^2.20.0", + "vuex": "^3.1.0", + "vxe-table": "2.9.13", + "vxe-table-plugin-antd": "1.8.10", + "xe-utils": "2.4.8" + }, + "devDependencies": { + "@babel/polyfill": "^7.2.5", + "@vue/cli-plugin-babel": "^3.3.0", + "@vue/cli-plugin-eslint": "^3.3.0", + "@vue/cli-service": "^3.3.0", + "@vue/eslint-config-standard": "^4.0.0", + "babel-eslint": "7.2.3", + "compression-webpack-plugin": "^3.1.0", + "eslint": "^5.16.0", + "eslint-plugin-vue": "^5.1.0", + "html-webpack-plugin": "^4.2.0", + "less": "^3.9.0", + "less-loader": "^4.1.0", + "vue-template-compiler": "^2.6.10" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/strongly-recommended", + "@vue/standard" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": { + "generator-star-spacing": "off", + "no-mixed-operators": 0, + "vue/max-attributes-per-line": [ + 2, + { + "singleline": 5, + "multiline": { + "max": 1, + "allowFirstLine": false + } + } + ], + "vue/attribute-hyphenation": 0, + "vue/html-self-closing": 0, + "vue/component-name-in-template-casing": 0, + "vue/html-closing-bracket-spacing": 0, + "vue/singleline-html-element-content-newline": 0, + "vue/no-unused-components": 0, + "vue/multiline-html-element-content-newline": 0, + "vue/no-use-v-if-with-v-for": 0, + "vue/html-closing-bracket-newline": 0, + "vue/no-parsing-error": 0, + "no-tabs": 0, + "indent": [ + "off", + 2 + ], + "no-console": 0, + "space-before-function-paren": 0 + } + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 10" + ] +} diff --git a/ant-design-vue-jeecg/public/cdn/babel-polyfill/polyfill_7_2_5.js b/ant-design-vue-jeecg/public/cdn/babel-polyfill/polyfill_7_2_5.js new file mode 100644 index 0000000..250b921 --- /dev/null +++ b/ant-design-vue-jeecg/public/cdn/babel-polyfill/polyfill_7_2_5.js @@ -0,0 +1,6953 @@ +(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 2 ? arguments[2] : undefined; + var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; + +},{"113":113,"117":117,"118":118}],18:[function(_dereq_,module,exports){ +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +'use strict'; +var toObject = _dereq_(118); +var toAbsoluteIndex = _dereq_(113); +var toLength = _dereq_(117); +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var aLen = arguments.length; + var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length); + var end = aLen > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; + +},{"113":113,"117":117,"118":118}],19:[function(_dereq_,module,exports){ +// false -> Array#indexOf +// true -> Array#includes +var toIObject = _dereq_(116); +var toLength = _dereq_(117); +var toAbsoluteIndex = _dereq_(113); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +},{"113":113,"116":116,"117":117}],20:[function(_dereq_,module,exports){ +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = _dereq_(32); +var IObject = _dereq_(53); +var toObject = _dereq_(118); +var toLength = _dereq_(117); +var asc = _dereq_(23); +module.exports = function (TYPE, $create) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + var create = $create || asc; + return function ($this, callbackfn, that) { + var O = toObject($this); + var self = IObject(O); + var f = ctx(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var val, res; + for (;length > index; index++) if (NO_HOLES || index in self) { + val = self[index]; + res = f(val, index, O); + if (TYPE) { + if (IS_MAP) result[index] = res; // map + else if (res) switch (TYPE) { + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; + +},{"117":117,"118":118,"23":23,"32":32,"53":53}],21:[function(_dereq_,module,exports){ +var aFunction = _dereq_(11); +var toObject = _dereq_(118); +var IObject = _dereq_(53); +var toLength = _dereq_(117); + +module.exports = function (that, callbackfn, aLen, memo, isRight) { + aFunction(callbackfn); + var O = toObject(that); + var self = IObject(O); + var length = toLength(O.length); + var index = isRight ? length - 1 : 0; + var i = isRight ? -1 : 1; + if (aLen < 2) for (;;) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (isRight ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; +}; + +},{"11":11,"117":117,"118":118,"53":53}],22:[function(_dereq_,module,exports){ +var isObject = _dereq_(57); +var isArray = _dereq_(55); +var SPECIES = _dereq_(128)('species'); + +module.exports = function (original) { + var C; + if (isArray(original)) { + C = original.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? Array : C; +}; + +},{"128":128,"55":55,"57":57}],23:[function(_dereq_,module,exports){ +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = _dereq_(22); + +module.exports = function (original, length) { + return new (speciesConstructor(original))(length); +}; + +},{"22":22}],24:[function(_dereq_,module,exports){ +'use strict'; +var aFunction = _dereq_(11); +var isObject = _dereq_(57); +var invoke = _dereq_(52); +var arraySlice = [].slice; +var factories = {}; + +var construct = function (F, len, args) { + if (!(len in factories)) { + for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']'; + // eslint-disable-next-line no-new-func + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } return factories[len](F, args); +}; + +module.exports = Function.bind || function bind(that /* , ...args */) { + var fn = aFunction(this); + var partArgs = arraySlice.call(arguments, 1); + var bound = function (/* args... */) { + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); + }; + if (isObject(fn.prototype)) bound.prototype = fn.prototype; + return bound; +}; + +},{"11":11,"52":52,"57":57}],25:[function(_dereq_,module,exports){ +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = _dereq_(26); +var TAG = _dereq_(128)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; + +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + +},{"128":128,"26":26}],26:[function(_dereq_,module,exports){ +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + +},{}],27:[function(_dereq_,module,exports){ +'use strict'; +var dP = _dereq_(75).f; +var create = _dereq_(74); +var redefineAll = _dereq_(93); +var ctx = _dereq_(32); +var anInstance = _dereq_(15); +var forOf = _dereq_(45); +var $iterDefine = _dereq_(61); +var step = _dereq_(63); +var setSpecies = _dereq_(99); +var DESCRIPTORS = _dereq_(36); +var fastKey = _dereq_(70).fastKey; +var validate = _dereq_(125); +var SIZE = DESCRIPTORS ? '_s' : 'size'; + +var getEntry = function (that, key) { + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return that._i[index]; + // frozen object case + for (entry = that._f; entry; entry = entry.n) { + if (entry.k == key) return entry; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = create(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear() { + for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { + entry.r = true; + if (entry.p) entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function (key) { + var that = validate(this, NAME); + var entry = getEntry(that, key); + if (entry) { + var next = entry.n; + var prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if (prev) prev.n = next; + if (next) next.p = prev; + if (that._f == entry) that._f = next; + if (that._l == entry) that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /* , that = undefined */) { + validate(this, NAME); + var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var entry; + while (entry = entry ? entry.n : this._f) { + f(entry.v, entry.k, this); + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key) { + return !!getEntry(validate(this, NAME), key); + } + }); + if (DESCRIPTORS) dP(C.prototype, 'size', { + get: function () { + return validate(this, NAME)[SIZE]; + } + }); + return C; + }, + def: function (that, key, value) { + var entry = getEntry(that, key); + var prev, index; + // change existing entry + if (entry) { + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if (!that._f) that._f = entry; + if (prev) prev.n = entry; + that[SIZE]++; + // add to index + if (index !== 'F') that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function (C, NAME, IS_MAP) { + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + $iterDefine(C, NAME, function (iterated, kind) { + this._t = validate(iterated, NAME); // target + this._k = kind; // kind + this._l = undefined; // previous + }, function () { + var that = this; + var kind = that._k; + var entry = that._l; + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + // get next entry + if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { + // or finish the iteration + that._t = undefined; + return step(1); + } + // return step by kind + if (kind == 'keys') return step(0, entry.k); + if (kind == 'values') return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(NAME); + } +}; + +},{"125":125,"15":15,"32":32,"36":36,"45":45,"61":61,"63":63,"70":70,"74":74,"75":75,"93":93,"99":99}],28:[function(_dereq_,module,exports){ +'use strict'; +var redefineAll = _dereq_(93); +var getWeak = _dereq_(70).getWeak; +var anObject = _dereq_(16); +var isObject = _dereq_(57); +var anInstance = _dereq_(15); +var forOf = _dereq_(45); +var createArrayMethod = _dereq_(20); +var $has = _dereq_(47); +var validate = _dereq_(125); +var arrayFind = createArrayMethod(5); +var arrayFindIndex = createArrayMethod(6); +var id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function (that) { + return that._l || (that._l = new UncaughtFrozenStore()); +}; +var UncaughtFrozenStore = function () { + this.a = []; +}; +var findUncaughtFrozen = function (store, key) { + return arrayFind(store.a, function (it) { + return it[0] === key; + }); +}; +UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function (key) { + var index = arrayFindIndex(this.a, function (it) { + return it[0] === key; + }); + if (~index) this.a.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = id++; // collection id + that._l = undefined; // leak store for uncaught frozen objects + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function (key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); + return data && $has(data, this._i) && delete data[this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); + return data && $has(data, this._i); + } + }); + return C; + }, + def: function (that, key, value) { + var data = getWeak(anObject(key), true); + if (data === true) uncaughtFrozenStore(that).set(key, value); + else data[that._i] = value; + return that; + }, + ufstore: uncaughtFrozenStore +}; + +},{"125":125,"15":15,"16":16,"20":20,"45":45,"47":47,"57":57,"70":70,"93":93}],29:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(46); +var $export = _dereq_(40); +var redefine = _dereq_(94); +var redefineAll = _dereq_(93); +var meta = _dereq_(70); +var forOf = _dereq_(45); +var anInstance = _dereq_(15); +var isObject = _dereq_(57); +var fails = _dereq_(42); +var $iterDetect = _dereq_(62); +var setToStringTag = _dereq_(100); +var inheritIfRequired = _dereq_(51); + +module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { + var Base = global[NAME]; + var C = Base; + var ADDER = IS_MAP ? 'set' : 'add'; + var proto = C && C.prototype; + var O = {}; + var fixMethod = function (KEY) { + var fn = proto[KEY]; + redefine(proto, KEY, + KEY == 'delete' ? function (a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a) { + return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { + new C().entries().next(); + }))) { + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + redefineAll(C.prototype, methods); + meta.NEED = true; + } else { + var instance = new C(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new C(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + if (!ACCEPT_ITERABLES) { + C = wrapper(function (target, iterable) { + anInstance(target, C, NAME); + var that = inheritIfRequired(new Base(), target, C); + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + // weak collections should not contains .clear method + if (IS_WEAK && proto.clear) delete proto.clear; + } + + setToStringTag(C, NAME); + + O[NAME] = C; + $export($export.G + $export.W + $export.F * (C != Base), O); + + if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); + + return C; +}; + +},{"100":100,"15":15,"40":40,"42":42,"45":45,"46":46,"51":51,"57":57,"62":62,"70":70,"93":93,"94":94}],30:[function(_dereq_,module,exports){ +var core = module.exports = { version: '2.6.1' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + +},{}],31:[function(_dereq_,module,exports){ +'use strict'; +var $defineProperty = _dereq_(75); +var createDesc = _dereq_(92); + +module.exports = function (object, index, value) { + if (index in object) $defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; + +},{"75":75,"92":92}],32:[function(_dereq_,module,exports){ +// optional / simple context binding +var aFunction = _dereq_(11); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + +},{"11":11}],33:[function(_dereq_,module,exports){ +'use strict'; +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +var fails = _dereq_(42); +var getTime = Date.prototype.getTime; +var $toISOString = Date.prototype.toISOString; + +var lz = function (num) { + return num > 9 ? num : '0' + num; +}; + +// PhantomJS / old WebKit has a broken implementations +module.exports = (fails(function () { + return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; +}) || !fails(function () { + $toISOString.call(new Date(NaN)); +})) ? function toISOString() { + if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); + var d = this; + var y = d.getUTCFullYear(); + var m = d.getUTCMilliseconds(); + var s = y < 0 ? '-' : y > 9999 ? '+' : ''; + return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) + + '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) + + 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) + + ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z'; +} : $toISOString; + +},{"42":42}],34:[function(_dereq_,module,exports){ +'use strict'; +var anObject = _dereq_(16); +var toPrimitive = _dereq_(119); +var NUMBER = 'number'; + +module.exports = function (hint) { + if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint'); + return toPrimitive(anObject(this), hint != NUMBER); +}; + +},{"119":119,"16":16}],35:[function(_dereq_,module,exports){ +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + +},{}],36:[function(_dereq_,module,exports){ +// Thank's IE8 for his funny defineProperty +module.exports = !_dereq_(42)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + +},{"42":42}],37:[function(_dereq_,module,exports){ +var isObject = _dereq_(57); +var document = _dereq_(46).document; +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; + +},{"46":46,"57":57}],38:[function(_dereq_,module,exports){ +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + +},{}],39:[function(_dereq_,module,exports){ +// all enumerable object keys, includes symbols +var getKeys = _dereq_(83); +var gOPS = _dereq_(80); +var pIE = _dereq_(84); +module.exports = function (it) { + var result = getKeys(it); + var getSymbols = gOPS.f; + if (getSymbols) { + var symbols = getSymbols(it); + var isEnum = pIE.f; + var i = 0; + var key; + while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); + } return result; +}; + +},{"80":80,"83":83,"84":84}],40:[function(_dereq_,module,exports){ +var global = _dereq_(46); +var core = _dereq_(30); +var hide = _dereq_(48); +var redefine = _dereq_(94); +var ctx = _dereq_(32); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if (target) redefine(target, key, out, type & $export.U); + // export + if (exports[key] != out) hide(exports, key, exp); + if (IS_PROTO && expProto[key] != out) expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + +},{"30":30,"32":32,"46":46,"48":48,"94":94}],41:[function(_dereq_,module,exports){ +var MATCH = _dereq_(128)('match'); +module.exports = function (KEY) { + var re = /./; + try { + '/./'[KEY](re); + } catch (e) { + try { + re[MATCH] = false; + return !'/./'[KEY](re); + } catch (f) { /* empty */ } + } return true; +}; + +},{"128":128}],42:[function(_dereq_,module,exports){ +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + +},{}],43:[function(_dereq_,module,exports){ +'use strict'; +_dereq_(224); +var redefine = _dereq_(94); +var hide = _dereq_(48); +var fails = _dereq_(42); +var defined = _dereq_(35); +var wks = _dereq_(128); +var regexpExec = _dereq_(96); + +var SPECIES = wks('species'); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$') !== '7'; +}); + +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length === 2 && result[0] === 'a' && result[1] === 'b'; +})(); + +module.exports = function (KEY, length, exec) { + var SYMBOL = wks(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + re.exec = function () { execCalled = true; return null; }; + if (KEY === 'split') { + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + } + re[SYMBOL](''); + return !execCalled; + }) : undefined; + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var fns = exec( + defined, + SYMBOL, + ''[KEY], + function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + } + ); + var strfn = fns[0]; + var rxfn = fns[1]; + + redefine(String.prototype, KEY, strfn); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return rxfn.call(string, this); } + ); + } +}; + +},{"128":128,"224":224,"35":35,"42":42,"48":48,"94":94,"96":96}],44:[function(_dereq_,module,exports){ +'use strict'; +// 21.2.5.3 get RegExp.prototype.flags +var anObject = _dereq_(16); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; + +},{"16":16}],45:[function(_dereq_,module,exports){ +var ctx = _dereq_(32); +var call = _dereq_(59); +var isArrayIter = _dereq_(54); +var anObject = _dereq_(16); +var toLength = _dereq_(117); +var getIterFn = _dereq_(129); +var BREAK = {}; +var RETURN = {}; +var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { + var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); + var f = ctx(fn, that, entries ? 2 : 1); + var index = 0; + var length, step, iterator, result; + if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if (result === BREAK || result === RETURN) return result; + } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { + result = call(iterator, f, step.value, entries); + if (result === BREAK || result === RETURN) return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; + +},{"117":117,"129":129,"16":16,"32":32,"54":54,"59":59}],46:[function(_dereq_,module,exports){ +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + +},{}],47:[function(_dereq_,module,exports){ +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + +},{}],48:[function(_dereq_,module,exports){ +var dP = _dereq_(75); +var createDesc = _dereq_(92); +module.exports = _dereq_(36) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + +},{"36":36,"75":75,"92":92}],49:[function(_dereq_,module,exports){ +var document = _dereq_(46).document; +module.exports = document && document.documentElement; + +},{"46":46}],50:[function(_dereq_,module,exports){ +module.exports = !_dereq_(36) && !_dereq_(42)(function () { + return Object.defineProperty(_dereq_(37)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); + +},{"36":36,"37":37,"42":42}],51:[function(_dereq_,module,exports){ +var isObject = _dereq_(57); +var setPrototypeOf = _dereq_(98).set; +module.exports = function (that, target, C) { + var S = target.constructor; + var P; + if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { + setPrototypeOf(that, P); + } return that; +}; + +},{"57":57,"98":98}],52:[function(_dereq_,module,exports){ +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function (fn, args, that) { + var un = that === undefined; + switch (args.length) { + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; + +},{}],53:[function(_dereq_,module,exports){ +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = _dereq_(26); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; + +},{"26":26}],54:[function(_dereq_,module,exports){ +// check on default Array iterator +var Iterators = _dereq_(64); +var ITERATOR = _dereq_(128)('iterator'); +var ArrayProto = Array.prototype; + +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + +},{"128":128,"64":64}],55:[function(_dereq_,module,exports){ +// 7.2.2 IsArray(argument) +var cof = _dereq_(26); +module.exports = Array.isArray || function isArray(arg) { + return cof(arg) == 'Array'; +}; + +},{"26":26}],56:[function(_dereq_,module,exports){ +// 20.1.2.3 Number.isInteger(number) +var isObject = _dereq_(57); +var floor = Math.floor; +module.exports = function isInteger(it) { + return !isObject(it) && isFinite(it) && floor(it) === it; +}; + +},{"57":57}],57:[function(_dereq_,module,exports){ +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + +},{}],58:[function(_dereq_,module,exports){ +// 7.2.8 IsRegExp(argument) +var isObject = _dereq_(57); +var cof = _dereq_(26); +var MATCH = _dereq_(128)('match'); +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; + +},{"128":128,"26":26,"57":57}],59:[function(_dereq_,module,exports){ +// call something on iterator step with safe closing on error +var anObject = _dereq_(16); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; + +},{"16":16}],60:[function(_dereq_,module,exports){ +'use strict'; +var create = _dereq_(74); +var descriptor = _dereq_(92); +var setToStringTag = _dereq_(100); +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +_dereq_(48)(IteratorPrototype, _dereq_(128)('iterator'), function () { return this; }); + +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + +},{"100":100,"128":128,"48":48,"74":74,"92":92}],61:[function(_dereq_,module,exports){ +'use strict'; +var LIBRARY = _dereq_(65); +var $export = _dereq_(40); +var redefine = _dereq_(94); +var hide = _dereq_(48); +var Iterators = _dereq_(64); +var $iterCreate = _dereq_(60); +var setToStringTag = _dereq_(100); +var getPrototypeOf = _dereq_(81); +var ITERATOR = _dereq_(128)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function () { return this; }; + +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + +},{"100":100,"128":128,"40":40,"48":48,"60":60,"64":64,"65":65,"81":81,"94":94}],62:[function(_dereq_,module,exports){ +var ITERATOR = _dereq_(128)('iterator'); +var SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } + +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; +}; + +},{"128":128}],63:[function(_dereq_,module,exports){ +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; + +},{}],64:[function(_dereq_,module,exports){ +module.exports = {}; + +},{}],65:[function(_dereq_,module,exports){ +module.exports = false; + +},{}],66:[function(_dereq_,module,exports){ +// 20.2.2.14 Math.expm1(x) +var $expm1 = Math.expm1; +module.exports = (!$expm1 + // Old FF bug + || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 + // Tor Browser bug + || $expm1(-2e-17) != -2e-17 +) ? function expm1(x) { + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; +} : $expm1; + +},{}],67:[function(_dereq_,module,exports){ +// 20.2.2.16 Math.fround(x) +var sign = _dereq_(69); +var pow = Math.pow; +var EPSILON = pow(2, -52); +var EPSILON32 = pow(2, -23); +var MAX32 = pow(2, 127) * (2 - EPSILON32); +var MIN32 = pow(2, -126); + +var roundTiesToEven = function (n) { + return n + 1 / EPSILON - 1 / EPSILON; +}; + +module.exports = Math.fround || function fround(x) { + var $abs = Math.abs(x); + var $sign = sign(x); + var a, result; + if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + // eslint-disable-next-line no-self-compare + if (result > MAX32 || result != result) return $sign * Infinity; + return $sign * result; +}; + +},{"69":69}],68:[function(_dereq_,module,exports){ +// 20.2.2.20 Math.log1p(x) +module.exports = Math.log1p || function log1p(x) { + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); +}; + +},{}],69:[function(_dereq_,module,exports){ +// 20.2.2.28 Math.sign(x) +module.exports = Math.sign || function sign(x) { + // eslint-disable-next-line no-self-compare + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; +}; + +},{}],70:[function(_dereq_,module,exports){ +var META = _dereq_(123)('meta'); +var isObject = _dereq_(57); +var has = _dereq_(47); +var setDesc = _dereq_(75).f; +var id = 0; +var isExtensible = Object.isExtensible || function () { + return true; +}; +var FREEZE = !_dereq_(42)(function () { + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function (it) { + setDesc(it, META, { value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + } }); +}; +var fastKey = function (it, create) { + // return primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function (it, create) { + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; + +},{"123":123,"42":42,"47":47,"57":57,"75":75}],71:[function(_dereq_,module,exports){ +var global = _dereq_(46); +var macrotask = _dereq_(112).set; +var Observer = global.MutationObserver || global.WebKitMutationObserver; +var process = global.process; +var Promise = global.Promise; +var isNode = _dereq_(26)(process) == 'process'; + +module.exports = function () { + var head, last, notify; + + var flush = function () { + var parent, fn; + if (isNode && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (e) { + if (head) notify(); + else last = undefined; + throw e; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (isNode) { + notify = function () { + process.nextTick(flush); + }; + // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 + } else if (Observer && !(global.navigator && global.navigator.standalone)) { + var toggle = true; + var node = document.createTextNode(''); + new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + var promise = Promise.resolve(undefined); + notify = function () { + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } + + return function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; + }; +}; + +},{"112":112,"26":26,"46":46}],72:[function(_dereq_,module,exports){ +'use strict'; +// 25.4.1.5 NewPromiseCapability(C) +var aFunction = _dereq_(11); + +function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +} + +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + +},{"11":11}],73:[function(_dereq_,module,exports){ +'use strict'; +// 19.1.2.1 Object.assign(target, source, ...) +var getKeys = _dereq_(83); +var gOPS = _dereq_(80); +var pIE = _dereq_(84); +var toObject = _dereq_(118); +var IObject = _dereq_(53); +var $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || _dereq_(42)(function () { + var A = {}; + var B = {}; + // eslint-disable-next-line no-undef + var S = Symbol(); + var K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function (k) { B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars + var T = toObject(target); + var aLen = arguments.length; + var index = 1; + var getSymbols = gOPS.f; + var isEnum = pIE.f; + while (aLen > index) { + var S = IObject(arguments[index++]); + var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key]; + } return T; +} : $assign; + +},{"118":118,"42":42,"53":53,"80":80,"83":83,"84":84}],74:[function(_dereq_,module,exports){ +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = _dereq_(16); +var dPs = _dereq_(76); +var enumBugKeys = _dereq_(38); +var IE_PROTO = _dereq_(101)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = _dereq_(37)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + _dereq_(49).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + +},{"101":101,"16":16,"37":37,"38":38,"49":49,"76":76}],75:[function(_dereq_,module,exports){ +var anObject = _dereq_(16); +var IE8_DOM_DEFINE = _dereq_(50); +var toPrimitive = _dereq_(119); +var dP = Object.defineProperty; + +exports.f = _dereq_(36) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + +},{"119":119,"16":16,"36":36,"50":50}],76:[function(_dereq_,module,exports){ +var dP = _dereq_(75); +var anObject = _dereq_(16); +var getKeys = _dereq_(83); + +module.exports = _dereq_(36) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + +},{"16":16,"36":36,"75":75,"83":83}],77:[function(_dereq_,module,exports){ +var pIE = _dereq_(84); +var createDesc = _dereq_(92); +var toIObject = _dereq_(116); +var toPrimitive = _dereq_(119); +var has = _dereq_(47); +var IE8_DOM_DEFINE = _dereq_(50); +var gOPD = Object.getOwnPropertyDescriptor; + +exports.f = _dereq_(36) ? gOPD : function getOwnPropertyDescriptor(O, P) { + O = toIObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return gOPD(O, P); + } catch (e) { /* empty */ } + if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); +}; + +},{"116":116,"119":119,"36":36,"47":47,"50":50,"84":84,"92":92}],78:[function(_dereq_,module,exports){ +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = _dereq_(116); +var gOPN = _dereq_(79).f; +var toString = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return gOPN(it); + } catch (e) { + return windowNames.slice(); + } +}; + +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); +}; + +},{"116":116,"79":79}],79:[function(_dereq_,module,exports){ +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = _dereq_(82); +var hiddenKeys = _dereq_(38).concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return $keys(O, hiddenKeys); +}; + +},{"38":38,"82":82}],80:[function(_dereq_,module,exports){ +exports.f = Object.getOwnPropertySymbols; + +},{}],81:[function(_dereq_,module,exports){ +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = _dereq_(47); +var toObject = _dereq_(118); +var IE_PROTO = _dereq_(101)('IE_PROTO'); +var ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + +},{"101":101,"118":118,"47":47}],82:[function(_dereq_,module,exports){ +var has = _dereq_(47); +var toIObject = _dereq_(116); +var arrayIndexOf = _dereq_(19)(false); +var IE_PROTO = _dereq_(101)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + +},{"101":101,"116":116,"19":19,"47":47}],83:[function(_dereq_,module,exports){ +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = _dereq_(82); +var enumBugKeys = _dereq_(38); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + +},{"38":38,"82":82}],84:[function(_dereq_,module,exports){ +exports.f = {}.propertyIsEnumerable; + +},{}],85:[function(_dereq_,module,exports){ +// most Object methods by ES6 should accept primitives +var $export = _dereq_(40); +var core = _dereq_(30); +var fails = _dereq_(42); +module.exports = function (KEY, exec) { + var fn = (core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); +}; + +},{"30":30,"40":40,"42":42}],86:[function(_dereq_,module,exports){ +var getKeys = _dereq_(83); +var toIObject = _dereq_(116); +var isEnum = _dereq_(84).f; +module.exports = function (isEntries) { + return function (it) { + var O = toIObject(it); + var keys = getKeys(O); + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) if (isEnum.call(O, key = keys[i++])) { + result.push(isEntries ? [key, O[key]] : O[key]); + } return result; + }; +}; + +},{"116":116,"83":83,"84":84}],87:[function(_dereq_,module,exports){ +// all object keys, includes non-enumerable and symbols +var gOPN = _dereq_(79); +var gOPS = _dereq_(80); +var anObject = _dereq_(16); +var Reflect = _dereq_(46).Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = gOPN.f(anObject(it)); + var getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; + +},{"16":16,"46":46,"79":79,"80":80}],88:[function(_dereq_,module,exports){ +var $parseFloat = _dereq_(46).parseFloat; +var $trim = _dereq_(110).trim; + +module.exports = 1 / $parseFloat(_dereq_(111) + '-0') !== -Infinity ? function parseFloat(str) { + var string = $trim(String(str), 3); + var result = $parseFloat(string); + return result === 0 && string.charAt(0) == '-' ? -0 : result; +} : $parseFloat; + +},{"110":110,"111":111,"46":46}],89:[function(_dereq_,module,exports){ +var $parseInt = _dereq_(46).parseInt; +var $trim = _dereq_(110).trim; +var ws = _dereq_(111); +var hex = /^[-+]?0[xX]/; + +module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) { + var string = $trim(String(str), 3); + return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10)); +} : $parseInt; + +},{"110":110,"111":111,"46":46}],90:[function(_dereq_,module,exports){ +module.exports = function (exec) { + try { + return { e: false, v: exec() }; + } catch (e) { + return { e: true, v: e }; + } +}; + +},{}],91:[function(_dereq_,module,exports){ +var anObject = _dereq_(16); +var isObject = _dereq_(57); +var newPromiseCapability = _dereq_(72); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + +},{"16":16,"57":57,"72":72}],92:[function(_dereq_,module,exports){ +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + +},{}],93:[function(_dereq_,module,exports){ +var redefine = _dereq_(94); +module.exports = function (target, src, safe) { + for (var key in src) redefine(target, key, src[key], safe); + return target; +}; + +},{"94":94}],94:[function(_dereq_,module,exports){ +var global = _dereq_(46); +var hide = _dereq_(48); +var has = _dereq_(47); +var SRC = _dereq_(123)('src'); +var TO_STRING = 'toString'; +var $toString = Function[TO_STRING]; +var TPL = ('' + $toString).split(TO_STRING); + +_dereq_(30).inspectSource = function (it) { + return $toString.call(it); +}; + +(module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) has(val, 'name') || hide(val, 'name', key); + if (O[key] === val) return; + if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if (O === global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + hide(O, key, val); + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); + +},{"123":123,"30":30,"46":46,"47":47,"48":48}],95:[function(_dereq_,module,exports){ +'use strict'; + +var classof = _dereq_(25); +var builtinExec = RegExp.prototype.exec; + + // `RegExpExec` abstract operation +// https://tc39.github.io/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw new TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + if (classof(R) !== 'RegExp') { + throw new TypeError('RegExp#exec called on incompatible receiver'); + } + return builtinExec.call(R, S); +}; + +},{"25":25}],96:[function(_dereq_,module,exports){ +'use strict'; + +var regexpFlags = _dereq_(44); + +var nativeExec = RegExp.prototype.exec; +// This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. +var nativeReplace = String.prototype.replace; + +var patchedExec = nativeExec; + +var LAST_INDEX = 'lastIndex'; + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/, + re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; +})(); + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; + +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; + + match = nativeExec.call(re, str); + + if (UPDATES_LAST_INDEX_WRONG && match) { + re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + // eslint-disable-next-line no-loop-func + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; +} + +module.exports = patchedExec; + +},{"44":44}],97:[function(_dereq_,module,exports){ +// 7.2.9 SameValue(x, y) +module.exports = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; +}; + +},{}],98:[function(_dereq_,module,exports){ +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = _dereq_(57); +var anObject = _dereq_(16); +var check = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function (test, buggy, set) { + try { + set = _dereq_(32)(Function.call, _dereq_(77).f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch (e) { buggy = true; } + return function setPrototypeOf(O, proto) { + check(O, proto); + if (buggy) O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; + +},{"16":16,"32":32,"57":57,"77":77}],99:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(46); +var dP = _dereq_(75); +var DESCRIPTORS = _dereq_(36); +var SPECIES = _dereq_(128)('species'); + +module.exports = function (KEY) { + var C = global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); +}; + +},{"128":128,"36":36,"46":46,"75":75}],100:[function(_dereq_,module,exports){ +var def = _dereq_(75).f; +var has = _dereq_(47); +var TAG = _dereq_(128)('toStringTag'); + +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; + +},{"128":128,"47":47,"75":75}],101:[function(_dereq_,module,exports){ +var shared = _dereq_(102)('keys'); +var uid = _dereq_(123); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; + +},{"102":102,"123":123}],102:[function(_dereq_,module,exports){ +var core = _dereq_(30); +var global = _dereq_(46); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || (global[SHARED] = {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: core.version, + mode: _dereq_(65) ? 'pure' : 'global', + copyright: '© 2018 Denis Pushkarev (zloirock.ru)' +}); + +},{"30":30,"46":46,"65":65}],103:[function(_dereq_,module,exports){ +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = _dereq_(16); +var aFunction = _dereq_(11); +var SPECIES = _dereq_(128)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; + +},{"11":11,"128":128,"16":16}],104:[function(_dereq_,module,exports){ +'use strict'; +var fails = _dereq_(42); + +module.exports = function (method, arg) { + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call + arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); + }); +}; + +},{"42":42}],105:[function(_dereq_,module,exports){ +var toInteger = _dereq_(115); +var defined = _dereq_(35); +// true -> String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + +},{"115":115,"35":35}],106:[function(_dereq_,module,exports){ +// helper for String#{startsWith, endsWith, includes} +var isRegExp = _dereq_(58); +var defined = _dereq_(35); + +module.exports = function (that, searchString, NAME) { + if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); + return String(defined(that)); +}; + +},{"35":35,"58":58}],107:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var fails = _dereq_(42); +var defined = _dereq_(35); +var quot = /"/g; +// B.2.3.2.1 CreateHTML(string, tag, attribute, value) +var createHTML = function (string, tag, attribute, value) { + var S = String(defined(string)); + var p1 = '<' + tag; + if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; + return p1 + '>' + S + ''; +}; +module.exports = function (NAME, exec) { + var O = {}; + O[NAME] = exec(createHTML); + $export($export.P + $export.F * fails(function () { + var test = ''[NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }), 'String', O); +}; + +},{"35":35,"40":40,"42":42}],108:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-string-pad-start-end +var toLength = _dereq_(117); +var repeat = _dereq_(109); +var defined = _dereq_(35); + +module.exports = function (that, maxLength, fillString, left) { + var S = String(defined(that)); + var stringLength = S.length; + var fillStr = fillString === undefined ? ' ' : String(fillString); + var intMaxLength = toLength(maxLength); + if (intMaxLength <= stringLength || fillStr == '') return S; + var fillLen = intMaxLength - stringLength; + var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); + if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); + return left ? stringFiller + S : S + stringFiller; +}; + +},{"109":109,"117":117,"35":35}],109:[function(_dereq_,module,exports){ +'use strict'; +var toInteger = _dereq_(115); +var defined = _dereq_(35); + +module.exports = function repeat(count) { + var str = String(defined(this)); + var res = ''; + var n = toInteger(count); + if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); + for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str; + return res; +}; + +},{"115":115,"35":35}],110:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var defined = _dereq_(35); +var fails = _dereq_(42); +var spaces = _dereq_(111); +var space = '[' + spaces + ']'; +var non = '\u200b\u0085'; +var ltrim = RegExp('^' + space + space + '*'); +var rtrim = RegExp(space + space + '*$'); + +var exporter = function (KEY, exec, ALIAS) { + var exp = {}; + var FORCE = fails(function () { + return !!spaces[KEY]() || non[KEY]() != non; + }); + var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY]; + if (ALIAS) exp[ALIAS] = fn; + $export($export.P + $export.F * FORCE, 'String', exp); +}; + +// 1 -> String#trimLeft +// 2 -> String#trimRight +// 3 -> String#trim +var trim = exporter.trim = function (string, TYPE) { + string = String(defined(string)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; +}; + +module.exports = exporter; + +},{"111":111,"35":35,"40":40,"42":42}],111:[function(_dereq_,module,exports){ +module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + +},{}],112:[function(_dereq_,module,exports){ +var ctx = _dereq_(32); +var invoke = _dereq_(52); +var html = _dereq_(49); +var cel = _dereq_(37); +var global = _dereq_(46); +var process = global.process; +var setTask = global.setImmediate; +var clearTask = global.clearImmediate; +var MessageChannel = global.MessageChannel; +var Dispatch = global.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; +var run = function () { + var id = +this; + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listener = function (event) { + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!setTask || !clearTask) { + setTask = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (_dereq_(26)(process) == 'process') { + defer = function (id) { + process.nextTick(ctx(run, id, 1)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { + defer = function (id) { + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in cel('script')) { + defer = function (id) { + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; + +},{"26":26,"32":32,"37":37,"46":46,"49":49,"52":52}],113:[function(_dereq_,module,exports){ +var toInteger = _dereq_(115); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + +},{"115":115}],114:[function(_dereq_,module,exports){ +// https://tc39.github.io/ecma262/#sec-toindex +var toInteger = _dereq_(115); +var toLength = _dereq_(117); +module.exports = function (it) { + if (it === undefined) return 0; + var number = toInteger(it); + var length = toLength(number); + if (number !== length) throw RangeError('Wrong length!'); + return length; +}; + +},{"115":115,"117":117}],115:[function(_dereq_,module,exports){ +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + +},{}],116:[function(_dereq_,module,exports){ +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = _dereq_(53); +var defined = _dereq_(35); +module.exports = function (it) { + return IObject(defined(it)); +}; + +},{"35":35,"53":53}],117:[function(_dereq_,module,exports){ +// 7.1.15 ToLength +var toInteger = _dereq_(115); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + +},{"115":115}],118:[function(_dereq_,module,exports){ +// 7.1.13 ToObject(argument) +var defined = _dereq_(35); +module.exports = function (it) { + return Object(defined(it)); +}; + +},{"35":35}],119:[function(_dereq_,module,exports){ +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = _dereq_(57); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + +},{"57":57}],120:[function(_dereq_,module,exports){ +'use strict'; +if (_dereq_(36)) { + var LIBRARY = _dereq_(65); + var global = _dereq_(46); + var fails = _dereq_(42); + var $export = _dereq_(40); + var $typed = _dereq_(122); + var $buffer = _dereq_(121); + var ctx = _dereq_(32); + var anInstance = _dereq_(15); + var propertyDesc = _dereq_(92); + var hide = _dereq_(48); + var redefineAll = _dereq_(93); + var toInteger = _dereq_(115); + var toLength = _dereq_(117); + var toIndex = _dereq_(114); + var toAbsoluteIndex = _dereq_(113); + var toPrimitive = _dereq_(119); + var has = _dereq_(47); + var classof = _dereq_(25); + var isObject = _dereq_(57); + var toObject = _dereq_(118); + var isArrayIter = _dereq_(54); + var create = _dereq_(74); + var getPrototypeOf = _dereq_(81); + var gOPN = _dereq_(79).f; + var getIterFn = _dereq_(129); + var uid = _dereq_(123); + var wks = _dereq_(128); + var createArrayMethod = _dereq_(20); + var createArrayIncludes = _dereq_(19); + var speciesConstructor = _dereq_(103); + var ArrayIterators = _dereq_(140); + var Iterators = _dereq_(64); + var $iterDetect = _dereq_(62); + var setSpecies = _dereq_(99); + var arrayFill = _dereq_(18); + var arrayCopyWithin = _dereq_(17); + var $DP = _dereq_(75); + var $GOPD = _dereq_(77); + var dP = $DP.f; + var gOPD = $GOPD.f; + var RangeError = global.RangeError; + var TypeError = global.TypeError; + var Uint8Array = global.Uint8Array; + var ARRAY_BUFFER = 'ArrayBuffer'; + var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER; + var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; + var PROTOTYPE = 'prototype'; + var ArrayProto = Array[PROTOTYPE]; + var $ArrayBuffer = $buffer.ArrayBuffer; + var $DataView = $buffer.DataView; + var arrayForEach = createArrayMethod(0); + var arrayFilter = createArrayMethod(2); + var arraySome = createArrayMethod(3); + var arrayEvery = createArrayMethod(4); + var arrayFind = createArrayMethod(5); + var arrayFindIndex = createArrayMethod(6); + var arrayIncludes = createArrayIncludes(true); + var arrayIndexOf = createArrayIncludes(false); + var arrayValues = ArrayIterators.values; + var arrayKeys = ArrayIterators.keys; + var arrayEntries = ArrayIterators.entries; + var arrayLastIndexOf = ArrayProto.lastIndexOf; + var arrayReduce = ArrayProto.reduce; + var arrayReduceRight = ArrayProto.reduceRight; + var arrayJoin = ArrayProto.join; + var arraySort = ArrayProto.sort; + var arraySlice = ArrayProto.slice; + var arrayToString = ArrayProto.toString; + var arrayToLocaleString = ArrayProto.toLocaleString; + var ITERATOR = wks('iterator'); + var TAG = wks('toStringTag'); + var TYPED_CONSTRUCTOR = uid('typed_constructor'); + var DEF_CONSTRUCTOR = uid('def_constructor'); + var ALL_CONSTRUCTORS = $typed.CONSTR; + var TYPED_ARRAY = $typed.TYPED; + var VIEW = $typed.VIEW; + var WRONG_LENGTH = 'Wrong length!'; + + var $map = createArrayMethod(1, function (O, length) { + return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length); + }); + + var LITTLE_ENDIAN = fails(function () { + // eslint-disable-next-line no-undef + return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1; + }); + + var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () { + new Uint8Array(1).set({}); + }); + + var toOffset = function (it, BYTES) { + var offset = toInteger(it); + if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!'); + return offset; + }; + + var validate = function (it) { + if (isObject(it) && TYPED_ARRAY in it) return it; + throw TypeError(it + ' is not a typed array!'); + }; + + var allocate = function (C, length) { + if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) { + throw TypeError('It is not a typed array constructor!'); + } return new C(length); + }; + + var speciesFromList = function (O, list) { + return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list); + }; + + var fromList = function (C, list) { + var index = 0; + var length = list.length; + var result = allocate(C, length); + while (length > index) result[index] = list[index++]; + return result; + }; + + var addGetter = function (it, key, internal) { + dP(it, key, { get: function () { return this._d[internal]; } }); + }; + + var $from = function from(source /* , mapfn, thisArg */) { + var O = toObject(source); + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iterFn = getIterFn(O); + var i, length, values, result, step, iterator; + if (iterFn != undefined && !isArrayIter(iterFn)) { + for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) { + values.push(step.value); + } O = values; + } + if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2); + for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) { + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; + }; + + var $of = function of(/* ...items */) { + var index = 0; + var length = arguments.length; + var result = allocate(this, length); + while (length > index) result[index] = arguments[index++]; + return result; + }; + + // iOS Safari 6.x fails here + var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); }); + + var $toLocaleString = function toLocaleString() { + return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments); + }; + + var proto = { + copyWithin: function copyWithin(target, start /* , end */) { + return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined); + }, + every: function every(callbackfn /* , thisArg */) { + return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars + return arrayFill.apply(validate(this), arguments); + }, + filter: function filter(callbackfn /* , thisArg */) { + return speciesFromList(this, arrayFilter(validate(this), callbackfn, + arguments.length > 1 ? arguments[1] : undefined)); + }, + find: function find(predicate /* , thisArg */) { + return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + findIndex: function findIndex(predicate /* , thisArg */) { + return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + forEach: function forEach(callbackfn /* , thisArg */) { + arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + indexOf: function indexOf(searchElement /* , fromIndex */) { + return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + includes: function includes(searchElement /* , fromIndex */) { + return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + join: function join(separator) { // eslint-disable-line no-unused-vars + return arrayJoin.apply(validate(this), arguments); + }, + lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars + return arrayLastIndexOf.apply(validate(this), arguments); + }, + map: function map(mapfn /* , thisArg */) { + return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined); + }, + reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduce.apply(validate(this), arguments); + }, + reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduceRight.apply(validate(this), arguments); + }, + reverse: function reverse() { + var that = this; + var length = validate(that).length; + var middle = Math.floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; + }, + some: function some(callbackfn /* , thisArg */) { + return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + sort: function sort(comparefn) { + return arraySort.call(validate(this), comparefn); + }, + subarray: function subarray(begin, end) { + var O = validate(this); + var length = O.length; + var $begin = toAbsoluteIndex(begin, length); + return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))( + O.buffer, + O.byteOffset + $begin * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin) + ); + } + }; + + var $slice = function slice(start, end) { + return speciesFromList(this, arraySlice.call(validate(this), start, end)); + }; + + var $set = function set(arrayLike /* , offset */) { + validate(this); + var offset = toOffset(arguments[1], 1); + var length = this.length; + var src = toObject(arrayLike); + var len = toLength(src.length); + var index = 0; + if (len + offset > length) throw RangeError(WRONG_LENGTH); + while (index < len) this[offset + index] = src[index++]; + }; + + var $iterators = { + entries: function entries() { + return arrayEntries.call(validate(this)); + }, + keys: function keys() { + return arrayKeys.call(validate(this)); + }, + values: function values() { + return arrayValues.call(validate(this)); + } + }; + + var isTAIndex = function (target, key) { + return isObject(target) + && target[TYPED_ARRAY] + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); + }; + var $getDesc = function getOwnPropertyDescriptor(target, key) { + return isTAIndex(target, key = toPrimitive(key, true)) + ? propertyDesc(2, target[key]) + : gOPD(target, key); + }; + var $setDesc = function defineProperty(target, key, desc) { + if (isTAIndex(target, key = toPrimitive(key, true)) + && isObject(desc) + && has(desc, 'value') + && !has(desc, 'get') + && !has(desc, 'set') + // TODO: add validation descriptor w/o calling accessors + && !desc.configurable + && (!has(desc, 'writable') || desc.writable) + && (!has(desc, 'enumerable') || desc.enumerable) + ) { + target[key] = desc.value; + return target; + } return dP(target, key, desc); + }; + + if (!ALL_CONSTRUCTORS) { + $GOPD.f = $getDesc; + $DP.f = $setDesc; + } + + $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', { + getOwnPropertyDescriptor: $getDesc, + defineProperty: $setDesc + }); + + if (fails(function () { arrayToString.call({}); })) { + arrayToString = arrayToLocaleString = function toString() { + return arrayJoin.call(this); + }; + } + + var $TypedArrayPrototype$ = redefineAll({}, proto); + redefineAll($TypedArrayPrototype$, $iterators); + hide($TypedArrayPrototype$, ITERATOR, $iterators.values); + redefineAll($TypedArrayPrototype$, { + slice: $slice, + set: $set, + constructor: function () { /* noop */ }, + toString: arrayToString, + toLocaleString: $toLocaleString + }); + addGetter($TypedArrayPrototype$, 'buffer', 'b'); + addGetter($TypedArrayPrototype$, 'byteOffset', 'o'); + addGetter($TypedArrayPrototype$, 'byteLength', 'l'); + addGetter($TypedArrayPrototype$, 'length', 'e'); + dP($TypedArrayPrototype$, TAG, { + get: function () { return this[TYPED_ARRAY]; } + }); + + // eslint-disable-next-line max-statements + module.exports = function (KEY, BYTES, wrapper, CLAMPED) { + CLAMPED = !!CLAMPED; + var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + KEY; + var SETTER = 'set' + KEY; + var TypedArray = global[NAME]; + var Base = TypedArray || {}; + var TAC = TypedArray && getPrototypeOf(TypedArray); + var FORCED = !TypedArray || !$typed.ABV; + var O = {}; + var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE]; + var getter = function (that, index) { + var data = that._d; + return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN); + }; + var setter = function (that, index, value) { + var data = that._d; + if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff; + data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN); + }; + var addElement = function (that, index) { + dP(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + if (FORCED) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME, '_d'); + var index = 0; + var offset = 0; + var buffer, byteLength, length, klass; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new $ArrayBuffer(byteLength); + } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + buffer = data; + offset = toOffset($offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw RangeError(WRONG_LENGTH); + byteLength = $len - offset; + if (byteLength < 0) throw RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (TYPED_ARRAY in data) { + return fromList(TypedArray, data); + } else { + return $from.call(TypedArray, data); + } + hide(that, '_d', { + b: buffer, + o: offset, + l: byteLength, + e: length, + v: new $DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$); + hide(TypedArrayPrototype, 'constructor', TypedArray); + } else if (!fails(function () { + TypedArray(1); + }) || !fails(function () { + new TypedArray(-1); // eslint-disable-line no-new + }) || !$iterDetect(function (iter) { + new TypedArray(); // eslint-disable-line no-new + new TypedArray(null); // eslint-disable-line no-new + new TypedArray(1.5); // eslint-disable-line no-new + new TypedArray(iter); // eslint-disable-line no-new + }, true)) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME); + var klass; + // `ws` module bug, temporarily remove validation length for Uint8Array + // https://github.com/websockets/ws/pull/645 + if (!isObject(data)) return new Base(toIndex(data)); + if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + return $length !== undefined + ? new Base(data, toOffset($offset, BYTES), $length) + : $offset !== undefined + ? new Base(data, toOffset($offset, BYTES)) + : new Base(data); + } + if (TYPED_ARRAY in data) return fromList(TypedArray, data); + return $from.call(TypedArray, data); + }); + arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) { + if (!(key in TypedArray)) hide(TypedArray, key, Base[key]); + }); + TypedArray[PROTOTYPE] = TypedArrayPrototype; + if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray; + } + var $nativeIterator = TypedArrayPrototype[ITERATOR]; + var CORRECT_ITER_NAME = !!$nativeIterator + && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined); + var $iterator = $iterators.values; + hide(TypedArray, TYPED_CONSTRUCTOR, true); + hide(TypedArrayPrototype, TYPED_ARRAY, NAME); + hide(TypedArrayPrototype, VIEW, true); + hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray); + + if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) { + dP(TypedArrayPrototype, TAG, { + get: function () { return NAME; } + }); + } + + O[NAME] = TypedArray; + + $export($export.G + $export.W + $export.F * (TypedArray != Base), O); + + $export($export.S, NAME, { + BYTES_PER_ELEMENT: BYTES + }); + + $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, { + from: $from, + of: $of + }); + + if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES); + + $export($export.P, NAME, proto); + + setSpecies(NAME); + + $export($export.P + $export.F * FORCED_SET, NAME, { set: $set }); + + $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators); + + if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString; + + $export($export.P + $export.F * fails(function () { + new TypedArray(1).slice(); + }), NAME, { slice: $slice }); + + $export($export.P + $export.F * (fails(function () { + return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString(); + }) || !fails(function () { + TypedArrayPrototype.toLocaleString.call([1, 2]); + })), NAME, { toLocaleString: $toLocaleString }); + + Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator; + if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator); + }; +} else module.exports = function () { /* empty */ }; + +},{"103":103,"113":113,"114":114,"115":115,"117":117,"118":118,"119":119,"121":121,"122":122,"123":123,"128":128,"129":129,"140":140,"15":15,"17":17,"18":18,"19":19,"20":20,"25":25,"32":32,"36":36,"40":40,"42":42,"46":46,"47":47,"48":48,"54":54,"57":57,"62":62,"64":64,"65":65,"74":74,"75":75,"77":77,"79":79,"81":81,"92":92,"93":93,"99":99}],121:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(46); +var DESCRIPTORS = _dereq_(36); +var LIBRARY = _dereq_(65); +var $typed = _dereq_(122); +var hide = _dereq_(48); +var redefineAll = _dereq_(93); +var fails = _dereq_(42); +var anInstance = _dereq_(15); +var toInteger = _dereq_(115); +var toLength = _dereq_(117); +var toIndex = _dereq_(114); +var gOPN = _dereq_(79).f; +var dP = _dereq_(75).f; +var arrayFill = _dereq_(18); +var setToStringTag = _dereq_(100); +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length!'; +var WRONG_INDEX = 'Wrong index!'; +var $ArrayBuffer = global[ARRAY_BUFFER]; +var $DataView = global[DATA_VIEW]; +var Math = global.Math; +var RangeError = global.RangeError; +// eslint-disable-next-line no-shadow-restricted-names +var Infinity = global.Infinity; +var BaseBuffer = $ArrayBuffer; +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; +var BUFFER = 'buffer'; +var BYTE_LENGTH = 'byteLength'; +var BYTE_OFFSET = 'byteOffset'; +var $BUFFER = DESCRIPTORS ? '_b' : BUFFER; +var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH; +var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET; + +// IEEE754 conversions based on https://github.com/feross/ieee754 +function packIEEE754(value, mLen, nBytes) { + var buffer = new Array(nBytes); + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0; + var i = 0; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + var e, m, c; + value = abs(value); + // eslint-disable-next-line no-self-compare + if (value != value || value === Infinity) { + // eslint-disable-next-line no-self-compare + m = value != value ? 1 : 0; + e = eMax; + } else { + e = floor(log(value) / LN2); + if (value * (c = pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * pow(2, mLen); + e = e + eBias; + } else { + m = value * pow(2, eBias - 1) * pow(2, mLen); + e = 0; + } + } + for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8); + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8); + buffer[--i] |= s * 128; + return buffer; +} +function unpackIEEE754(buffer, mLen, nBytes) { + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = eLen - 7; + var i = nBytes - 1; + var s = buffer[i--]; + var e = s & 127; + var m; + s >>= 7; + for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8); + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8); + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : s ? -Infinity : Infinity; + } else { + m = m + pow(2, mLen); + e = e - eBias; + } return (s ? -1 : 1) * m * pow(2, e - mLen); +} + +function unpackI32(bytes) { + return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0]; +} +function packI8(it) { + return [it & 0xff]; +} +function packI16(it) { + return [it & 0xff, it >> 8 & 0xff]; +} +function packI32(it) { + return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff]; +} +function packF64(it) { + return packIEEE754(it, 52, 8); +} +function packF32(it) { + return packIEEE754(it, 23, 4); +} + +function addGetter(C, key, internal) { + dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } }); +} + +function get(view, bytes, index, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = store.slice(start, start + bytes); + return isLittleEndian ? pack : pack.reverse(); +} +function set(view, bytes, index, conversion, value, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = conversion(+value); + for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1]; +} + +if (!$typed.ABV) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer, ARRAY_BUFFER); + var byteLength = toIndex(length); + this._b = arrayFill.call(new Array(byteLength), 0); + this[$LENGTH] = byteLength; + }; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = buffer[$LENGTH]; + var offset = toInteger(byteOffset); + if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); + this[$BUFFER] = buffer; + this[$OFFSET] = offset; + this[$LENGTH] = byteLength; + }; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, BYTE_LENGTH, '_l'); + addGetter($DataView, BUFFER, '_b'); + addGetter($DataView, BYTE_LENGTH, '_l'); + addGetter($DataView, BYTE_OFFSET, '_o'); + } + + redefineAll($DataView[PROTOTYPE], { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packF32, value, arguments[2]); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packF64, value, arguments[2]); + } + }); +} else { + if (!fails(function () { + $ArrayBuffer(1); + }) || !fails(function () { + new $ArrayBuffer(-1); // eslint-disable-line no-new + }) || fails(function () { + new $ArrayBuffer(); // eslint-disable-line no-new + new $ArrayBuffer(1.5); // eslint-disable-line no-new + new $ArrayBuffer(NaN); // eslint-disable-line no-new + return $ArrayBuffer.name != ARRAY_BUFFER; + })) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer); + return new BaseBuffer(toIndex(length)); + }; + var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE]; + for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) { + if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]); + } + if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer; + } + // iOS Safari 7.x bug + var view = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = $DataView[PROTOTYPE].setInt8; + view.setInt8(0, 2147483648); + view.setInt8(1, 2147483649); + if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], { + setInt8: function setInt8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + } + }, true); +} +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); +hide($DataView[PROTOTYPE], $typed.VIEW, true); +exports[ARRAY_BUFFER] = $ArrayBuffer; +exports[DATA_VIEW] = $DataView; + +},{"100":100,"114":114,"115":115,"117":117,"122":122,"15":15,"18":18,"36":36,"42":42,"46":46,"48":48,"65":65,"75":75,"79":79,"93":93}],122:[function(_dereq_,module,exports){ +var global = _dereq_(46); +var hide = _dereq_(48); +var uid = _dereq_(123); +var TYPED = uid('typed_array'); +var VIEW = uid('view'); +var ABV = !!(global.ArrayBuffer && global.DataView); +var CONSTR = ABV; +var i = 0; +var l = 9; +var Typed; + +var TypedArrayConstructors = ( + 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array' +).split(','); + +while (i < l) { + if (Typed = global[TypedArrayConstructors[i++]]) { + hide(Typed.prototype, TYPED, true); + hide(Typed.prototype, VIEW, true); + } else CONSTR = false; +} + +module.exports = { + ABV: ABV, + CONSTR: CONSTR, + TYPED: TYPED, + VIEW: VIEW +}; + +},{"123":123,"46":46,"48":48}],123:[function(_dereq_,module,exports){ +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + +},{}],124:[function(_dereq_,module,exports){ +var global = _dereq_(46); +var navigator = global.navigator; + +module.exports = navigator && navigator.userAgent || ''; + +},{"46":46}],125:[function(_dereq_,module,exports){ +var isObject = _dereq_(57); +module.exports = function (it, TYPE) { + if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); + return it; +}; + +},{"57":57}],126:[function(_dereq_,module,exports){ +var global = _dereq_(46); +var core = _dereq_(30); +var LIBRARY = _dereq_(65); +var wksExt = _dereq_(127); +var defineProperty = _dereq_(75).f; +module.exports = function (name) { + var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); + if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); +}; + +},{"127":127,"30":30,"46":46,"65":65,"75":75}],127:[function(_dereq_,module,exports){ +exports.f = _dereq_(128); + +},{"128":128}],128:[function(_dereq_,module,exports){ +var store = _dereq_(102)('wks'); +var uid = _dereq_(123); +var Symbol = _dereq_(46).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + +},{"102":102,"123":123,"46":46}],129:[function(_dereq_,module,exports){ +var classof = _dereq_(25); +var ITERATOR = _dereq_(128)('iterator'); +var Iterators = _dereq_(64); +module.exports = _dereq_(30).getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + +},{"128":128,"25":25,"30":30,"64":64}],130:[function(_dereq_,module,exports){ +// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) +var $export = _dereq_(40); + +$export($export.P, 'Array', { copyWithin: _dereq_(17) }); + +_dereq_(13)('copyWithin'); + +},{"13":13,"17":17,"40":40}],131:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $every = _dereq_(20)(4); + +$export($export.P + $export.F * !_dereq_(104)([].every, true), 'Array', { + // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg]) + every: function every(callbackfn /* , thisArg */) { + return $every(this, callbackfn, arguments[1]); + } +}); + +},{"104":104,"20":20,"40":40}],132:[function(_dereq_,module,exports){ +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +var $export = _dereq_(40); + +$export($export.P, 'Array', { fill: _dereq_(18) }); + +_dereq_(13)('fill'); + +},{"13":13,"18":18,"40":40}],133:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $filter = _dereq_(20)(2); + +$export($export.P + $export.F * !_dereq_(104)([].filter, true), 'Array', { + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments[1]); + } +}); + +},{"104":104,"20":20,"40":40}],134:[function(_dereq_,module,exports){ +'use strict'; +// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined) +var $export = _dereq_(40); +var $find = _dereq_(20)(6); +var KEY = 'findIndex'; +var forced = true; +// Shouldn't skip holes +if (KEY in []) Array(1)[KEY](function () { forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + findIndex: function findIndex(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +_dereq_(13)(KEY); + +},{"13":13,"20":20,"40":40}],135:[function(_dereq_,module,exports){ +'use strict'; +// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined) +var $export = _dereq_(40); +var $find = _dereq_(20)(5); +var KEY = 'find'; +var forced = true; +// Shouldn't skip holes +if (KEY in []) Array(1)[KEY](function () { forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +_dereq_(13)(KEY); + +},{"13":13,"20":20,"40":40}],136:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $forEach = _dereq_(20)(0); +var STRICT = _dereq_(104)([].forEach, true); + +$export($export.P + $export.F * !STRICT, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments[1]); + } +}); + +},{"104":104,"20":20,"40":40}],137:[function(_dereq_,module,exports){ +'use strict'; +var ctx = _dereq_(32); +var $export = _dereq_(40); +var toObject = _dereq_(118); +var call = _dereq_(59); +var isArrayIter = _dereq_(54); +var toLength = _dereq_(117); +var createProperty = _dereq_(31); +var getIterFn = _dereq_(129); + +$export($export.S + $export.F * !_dereq_(62)(function (iter) { Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iterFn = getIterFn(O); + var length, result, step, iterator; + if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { + for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for (result = new C(length); length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); + +},{"117":117,"118":118,"129":129,"31":31,"32":32,"40":40,"54":54,"59":59,"62":62}],138:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $indexOf = _dereq_(19)(false); +var $native = [].indexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(104)($native)), 'Array', { + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? $native.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments[1]); + } +}); + +},{"104":104,"19":19,"40":40}],139:[function(_dereq_,module,exports){ +// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) +var $export = _dereq_(40); + +$export($export.S, 'Array', { isArray: _dereq_(55) }); + +},{"40":40,"55":55}],140:[function(_dereq_,module,exports){ +'use strict'; +var addToUnscopables = _dereq_(13); +var step = _dereq_(63); +var Iterators = _dereq_(64); +var toIObject = _dereq_(116); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = _dereq_(61)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +},{"116":116,"13":13,"61":61,"63":63,"64":64}],141:[function(_dereq_,module,exports){ +'use strict'; +// 22.1.3.13 Array.prototype.join(separator) +var $export = _dereq_(40); +var toIObject = _dereq_(116); +var arrayJoin = [].join; + +// fallback for not array-like strings +$export($export.P + $export.F * (_dereq_(53) != Object || !_dereq_(104)(arrayJoin)), 'Array', { + join: function join(separator) { + return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator); + } +}); + +},{"104":104,"116":116,"40":40,"53":53}],142:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var toIObject = _dereq_(116); +var toInteger = _dereq_(115); +var toLength = _dereq_(117); +var $native = [].lastIndexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !_dereq_(104)($native)), 'Array', { + // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex]) + lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0; + var O = toIObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0; + return -1; + } +}); + +},{"104":104,"115":115,"116":116,"117":117,"40":40}],143:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $map = _dereq_(20)(1); + +$export($export.P + $export.F * !_dereq_(104)([].map, true), 'Array', { + // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments[1]); + } +}); + +},{"104":104,"20":20,"40":40}],144:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var createProperty = _dereq_(31); + +// WebKit Array.of isn't generic +$export($export.S + $export.F * _dereq_(42)(function () { + function F() { /* empty */ } + return !(Array.of.call(F) instanceof F); +}), 'Array', { + // 22.1.2.3 Array.of( ...items) + of: function of(/* ...args */) { + var index = 0; + var aLen = arguments.length; + var result = new (typeof this == 'function' ? this : Array)(aLen); + while (aLen > index) createProperty(result, index, arguments[index++]); + result.length = aLen; + return result; + } +}); + +},{"31":31,"40":40,"42":42}],145:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $reduce = _dereq_(21); + +$export($export.P + $export.F * !_dereq_(104)([].reduceRight, true), 'Array', { + // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue]) + reduceRight: function reduceRight(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], true); + } +}); + +},{"104":104,"21":21,"40":40}],146:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $reduce = _dereq_(21); + +$export($export.P + $export.F * !_dereq_(104)([].reduce, true), 'Array', { + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], false); + } +}); + +},{"104":104,"21":21,"40":40}],147:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var html = _dereq_(49); +var cof = _dereq_(26); +var toAbsoluteIndex = _dereq_(113); +var toLength = _dereq_(117); +var arraySlice = [].slice; + +// fallback for not array-like ES3 strings and DOM objects +$export($export.P + $export.F * _dereq_(42)(function () { + if (html) arraySlice.call(html); +}), 'Array', { + slice: function slice(begin, end) { + var len = toLength(this.length); + var klass = cof(this); + end = end === undefined ? len : end; + if (klass == 'Array') return arraySlice.call(this, begin, end); + var start = toAbsoluteIndex(begin, len); + var upTo = toAbsoluteIndex(end, len); + var size = toLength(upTo - start); + var cloned = new Array(size); + var i = 0; + for (; i < size; i++) cloned[i] = klass == 'String' + ? this.charAt(start + i) + : this[start + i]; + return cloned; + } +}); + +},{"113":113,"117":117,"26":26,"40":40,"42":42,"49":49}],148:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $some = _dereq_(20)(3); + +$export($export.P + $export.F * !_dereq_(104)([].some, true), 'Array', { + // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg]) + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments[1]); + } +}); + +},{"104":104,"20":20,"40":40}],149:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var aFunction = _dereq_(11); +var toObject = _dereq_(118); +var fails = _dereq_(42); +var $sort = [].sort; +var test = [1, 2, 3]; + +$export($export.P + $export.F * (fails(function () { + // IE8- + test.sort(undefined); +}) || !fails(function () { + // V8 bug + test.sort(null); + // Old WebKit +}) || !_dereq_(104)($sort)), 'Array', { + // 22.1.3.25 Array.prototype.sort(comparefn) + sort: function sort(comparefn) { + return comparefn === undefined + ? $sort.call(toObject(this)) + : $sort.call(toObject(this), aFunction(comparefn)); + } +}); + +},{"104":104,"11":11,"118":118,"40":40,"42":42}],150:[function(_dereq_,module,exports){ +_dereq_(99)('Array'); + +},{"99":99}],151:[function(_dereq_,module,exports){ +// 20.3.3.1 / 15.9.4.4 Date.now() +var $export = _dereq_(40); + +$export($export.S, 'Date', { now: function () { return new Date().getTime(); } }); + +},{"40":40}],152:[function(_dereq_,module,exports){ +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +var $export = _dereq_(40); +var toISOString = _dereq_(33); + +// PhantomJS / old WebKit has a broken implementations +$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', { + toISOString: toISOString +}); + +},{"33":33,"40":40}],153:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var toObject = _dereq_(118); +var toPrimitive = _dereq_(119); + +$export($export.P + $export.F * _dereq_(42)(function () { + return new Date(NaN).toJSON() !== null + || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; +}), 'Date', { + // eslint-disable-next-line no-unused-vars + toJSON: function toJSON(key) { + var O = toObject(this); + var pv = toPrimitive(O); + return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); + } +}); + +},{"118":118,"119":119,"40":40,"42":42}],154:[function(_dereq_,module,exports){ +var TO_PRIMITIVE = _dereq_(128)('toPrimitive'); +var proto = Date.prototype; + +if (!(TO_PRIMITIVE in proto)) _dereq_(48)(proto, TO_PRIMITIVE, _dereq_(34)); + +},{"128":128,"34":34,"48":48}],155:[function(_dereq_,module,exports){ +var DateProto = Date.prototype; +var INVALID_DATE = 'Invalid Date'; +var TO_STRING = 'toString'; +var $toString = DateProto[TO_STRING]; +var getTime = DateProto.getTime; +if (new Date(NaN) + '' != INVALID_DATE) { + _dereq_(94)(DateProto, TO_STRING, function toString() { + var value = getTime.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? $toString.call(this) : INVALID_DATE; + }); +} + +},{"94":94}],156:[function(_dereq_,module,exports){ +// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...) +var $export = _dereq_(40); + +$export($export.P, 'Function', { bind: _dereq_(24) }); + +},{"24":24,"40":40}],157:[function(_dereq_,module,exports){ +'use strict'; +var isObject = _dereq_(57); +var getPrototypeOf = _dereq_(81); +var HAS_INSTANCE = _dereq_(128)('hasInstance'); +var FunctionProto = Function.prototype; +// 19.2.3.6 Function.prototype[@@hasInstance](V) +if (!(HAS_INSTANCE in FunctionProto)) _dereq_(75).f(FunctionProto, HAS_INSTANCE, { value: function (O) { + if (typeof this != 'function' || !isObject(O)) return false; + if (!isObject(this.prototype)) return O instanceof this; + // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: + while (O = getPrototypeOf(O)) if (this.prototype === O) return true; + return false; +} }); + +},{"128":128,"57":57,"75":75,"81":81}],158:[function(_dereq_,module,exports){ +var dP = _dereq_(75).f; +var FProto = Function.prototype; +var nameRE = /^\s*function ([^ (]*)/; +var NAME = 'name'; + +// 19.2.4.2 name +NAME in FProto || _dereq_(36) && dP(FProto, NAME, { + configurable: true, + get: function () { + try { + return ('' + this).match(nameRE)[1]; + } catch (e) { + return ''; + } + } +}); + +},{"36":36,"75":75}],159:[function(_dereq_,module,exports){ +'use strict'; +var strong = _dereq_(27); +var validate = _dereq_(125); +var MAP = 'Map'; + +// 23.1 Map Objects +module.exports = _dereq_(29)(MAP, function (get) { + return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key) { + var entry = strong.getEntry(validate(this, MAP), key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value) { + return strong.def(validate(this, MAP), key === 0 ? 0 : key, value); + } +}, strong, true); + +},{"125":125,"27":27,"29":29}],160:[function(_dereq_,module,exports){ +// 20.2.2.3 Math.acosh(x) +var $export = _dereq_(40); +var log1p = _dereq_(68); +var sqrt = Math.sqrt; +var $acosh = Math.acosh; + +$export($export.S + $export.F * !($acosh + // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 + && Math.floor($acosh(Number.MAX_VALUE)) == 710 + // Tor Browser bug: Math.acosh(Infinity) -> NaN + && $acosh(Infinity) == Infinity +), 'Math', { + acosh: function acosh(x) { + return (x = +x) < 1 ? NaN : x > 94906265.62425156 + ? Math.log(x) + Math.LN2 + : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); + } +}); + +},{"40":40,"68":68}],161:[function(_dereq_,module,exports){ +// 20.2.2.5 Math.asinh(x) +var $export = _dereq_(40); +var $asinh = Math.asinh; + +function asinh(x) { + return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1)); +} + +// Tor Browser bug: Math.asinh(0) -> -0 +$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh }); + +},{"40":40}],162:[function(_dereq_,module,exports){ +// 20.2.2.7 Math.atanh(x) +var $export = _dereq_(40); +var $atanh = Math.atanh; + +// Tor Browser bug: Math.atanh(-0) -> 0 +$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', { + atanh: function atanh(x) { + return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2; + } +}); + +},{"40":40}],163:[function(_dereq_,module,exports){ +// 20.2.2.9 Math.cbrt(x) +var $export = _dereq_(40); +var sign = _dereq_(69); + +$export($export.S, 'Math', { + cbrt: function cbrt(x) { + return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3); + } +}); + +},{"40":40,"69":69}],164:[function(_dereq_,module,exports){ +// 20.2.2.11 Math.clz32(x) +var $export = _dereq_(40); + +$export($export.S, 'Math', { + clz32: function clz32(x) { + return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32; + } +}); + +},{"40":40}],165:[function(_dereq_,module,exports){ +// 20.2.2.12 Math.cosh(x) +var $export = _dereq_(40); +var exp = Math.exp; + +$export($export.S, 'Math', { + cosh: function cosh(x) { + return (exp(x = +x) + exp(-x)) / 2; + } +}); + +},{"40":40}],166:[function(_dereq_,module,exports){ +// 20.2.2.14 Math.expm1(x) +var $export = _dereq_(40); +var $expm1 = _dereq_(66); + +$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 }); + +},{"40":40,"66":66}],167:[function(_dereq_,module,exports){ +// 20.2.2.16 Math.fround(x) +var $export = _dereq_(40); + +$export($export.S, 'Math', { fround: _dereq_(67) }); + +},{"40":40,"67":67}],168:[function(_dereq_,module,exports){ +// 20.2.2.17 Math.hypot([value1[, value2[, … ]]]) +var $export = _dereq_(40); +var abs = Math.abs; + +$export($export.S, 'Math', { + hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars + var sum = 0; + var i = 0; + var aLen = arguments.length; + var larg = 0; + var arg, div; + while (i < aLen) { + arg = abs(arguments[i++]); + if (larg < arg) { + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if (arg > 0) { + div = arg / larg; + sum += div * div; + } else sum += arg; + } + return larg === Infinity ? Infinity : larg * Math.sqrt(sum); + } +}); + +},{"40":40}],169:[function(_dereq_,module,exports){ +// 20.2.2.18 Math.imul(x, y) +var $export = _dereq_(40); +var $imul = Math.imul; + +// some WebKit versions fails with big numbers, some has wrong arity +$export($export.S + $export.F * _dereq_(42)(function () { + return $imul(0xffffffff, 5) != -5 || $imul.length != 2; +}), 'Math', { + imul: function imul(x, y) { + var UINT16 = 0xffff; + var xn = +x; + var yn = +y; + var xl = UINT16 & xn; + var yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } +}); + +},{"40":40,"42":42}],170:[function(_dereq_,module,exports){ +// 20.2.2.21 Math.log10(x) +var $export = _dereq_(40); + +$export($export.S, 'Math', { + log10: function log10(x) { + return Math.log(x) * Math.LOG10E; + } +}); + +},{"40":40}],171:[function(_dereq_,module,exports){ +// 20.2.2.20 Math.log1p(x) +var $export = _dereq_(40); + +$export($export.S, 'Math', { log1p: _dereq_(68) }); + +},{"40":40,"68":68}],172:[function(_dereq_,module,exports){ +// 20.2.2.22 Math.log2(x) +var $export = _dereq_(40); + +$export($export.S, 'Math', { + log2: function log2(x) { + return Math.log(x) / Math.LN2; + } +}); + +},{"40":40}],173:[function(_dereq_,module,exports){ +// 20.2.2.28 Math.sign(x) +var $export = _dereq_(40); + +$export($export.S, 'Math', { sign: _dereq_(69) }); + +},{"40":40,"69":69}],174:[function(_dereq_,module,exports){ +// 20.2.2.30 Math.sinh(x) +var $export = _dereq_(40); +var expm1 = _dereq_(66); +var exp = Math.exp; + +// V8 near Chromium 38 has a problem with very small numbers +$export($export.S + $export.F * _dereq_(42)(function () { + return !Math.sinh(-2e-17) != -2e-17; +}), 'Math', { + sinh: function sinh(x) { + return Math.abs(x = +x) < 1 + ? (expm1(x) - expm1(-x)) / 2 + : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2); + } +}); + +},{"40":40,"42":42,"66":66}],175:[function(_dereq_,module,exports){ +// 20.2.2.33 Math.tanh(x) +var $export = _dereq_(40); +var expm1 = _dereq_(66); +var exp = Math.exp; + +$export($export.S, 'Math', { + tanh: function tanh(x) { + var a = expm1(x = +x); + var b = expm1(-x); + return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); + } +}); + +},{"40":40,"66":66}],176:[function(_dereq_,module,exports){ +// 20.2.2.34 Math.trunc(x) +var $export = _dereq_(40); + +$export($export.S, 'Math', { + trunc: function trunc(it) { + return (it > 0 ? Math.floor : Math.ceil)(it); + } +}); + +},{"40":40}],177:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(46); +var has = _dereq_(47); +var cof = _dereq_(26); +var inheritIfRequired = _dereq_(51); +var toPrimitive = _dereq_(119); +var fails = _dereq_(42); +var gOPN = _dereq_(79).f; +var gOPD = _dereq_(77).f; +var dP = _dereq_(75).f; +var $trim = _dereq_(110).trim; +var NUMBER = 'Number'; +var $Number = global[NUMBER]; +var Base = $Number; +var proto = $Number.prototype; +// Opera ~12 has broken Object#toString +var BROKEN_COF = cof(_dereq_(74)(proto)) == NUMBER; +var TRIM = 'trim' in String.prototype; + +// 7.1.3 ToNumber(argument) +var toNumber = function (argument) { + var it = toPrimitive(argument, false); + if (typeof it == 'string' && it.length > 2) { + it = TRIM ? it.trim() : $trim(it, 3); + var first = it.charCodeAt(0); + var third, radix, maxCode; + if (first === 43 || first === 45) { + third = it.charCodeAt(2); + if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (it.charCodeAt(1)) { + case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i + case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i + default: return +it; + } + for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) { + code = digits.charCodeAt(i); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) return NaN; + } return parseInt(digits, radix); + } + } return +it; +}; + +if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) { + $Number = function Number(value) { + var it = arguments.length < 1 ? 0 : value; + var that = this; + return that instanceof $Number + // check on 1..constructor(foo) case + && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER) + ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it); + }; + for (var keys = _dereq_(36) ? gOPN(Base) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES6 (in case, if modules with ES6 Number statics required before): + 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' + ).split(','), j = 0, key; keys.length > j; j++) { + if (has(Base, key = keys[j]) && !has($Number, key)) { + dP($Number, key, gOPD(Base, key)); + } + } + $Number.prototype = proto; + proto.constructor = $Number; + _dereq_(94)(global, NUMBER, $Number); +} + +},{"110":110,"119":119,"26":26,"36":36,"42":42,"46":46,"47":47,"51":51,"74":74,"75":75,"77":77,"79":79,"94":94}],178:[function(_dereq_,module,exports){ +// 20.1.2.1 Number.EPSILON +var $export = _dereq_(40); + +$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) }); + +},{"40":40}],179:[function(_dereq_,module,exports){ +// 20.1.2.2 Number.isFinite(number) +var $export = _dereq_(40); +var _isFinite = _dereq_(46).isFinite; + +$export($export.S, 'Number', { + isFinite: function isFinite(it) { + return typeof it == 'number' && _isFinite(it); + } +}); + +},{"40":40,"46":46}],180:[function(_dereq_,module,exports){ +// 20.1.2.3 Number.isInteger(number) +var $export = _dereq_(40); + +$export($export.S, 'Number', { isInteger: _dereq_(56) }); + +},{"40":40,"56":56}],181:[function(_dereq_,module,exports){ +// 20.1.2.4 Number.isNaN(number) +var $export = _dereq_(40); + +$export($export.S, 'Number', { + isNaN: function isNaN(number) { + // eslint-disable-next-line no-self-compare + return number != number; + } +}); + +},{"40":40}],182:[function(_dereq_,module,exports){ +// 20.1.2.5 Number.isSafeInteger(number) +var $export = _dereq_(40); +var isInteger = _dereq_(56); +var abs = Math.abs; + +$export($export.S, 'Number', { + isSafeInteger: function isSafeInteger(number) { + return isInteger(number) && abs(number) <= 0x1fffffffffffff; + } +}); + +},{"40":40,"56":56}],183:[function(_dereq_,module,exports){ +// 20.1.2.6 Number.MAX_SAFE_INTEGER +var $export = _dereq_(40); + +$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff }); + +},{"40":40}],184:[function(_dereq_,module,exports){ +// 20.1.2.10 Number.MIN_SAFE_INTEGER +var $export = _dereq_(40); + +$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff }); + +},{"40":40}],185:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var $parseFloat = _dereq_(88); +// 20.1.2.12 Number.parseFloat(string) +$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat }); + +},{"40":40,"88":88}],186:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var $parseInt = _dereq_(89); +// 20.1.2.13 Number.parseInt(string, radix) +$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt }); + +},{"40":40,"89":89}],187:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var toInteger = _dereq_(115); +var aNumberValue = _dereq_(12); +var repeat = _dereq_(109); +var $toFixed = 1.0.toFixed; +var floor = Math.floor; +var data = [0, 0, 0, 0, 0, 0]; +var ERROR = 'Number.toFixed: incorrect invocation!'; +var ZERO = '0'; + +var multiply = function (n, c) { + var i = -1; + var c2 = c; + while (++i < 6) { + c2 += n * data[i]; + data[i] = c2 % 1e7; + c2 = floor(c2 / 1e7); + } +}; +var divide = function (n) { + var i = 6; + var c = 0; + while (--i >= 0) { + c += data[i]; + data[i] = floor(c / n); + c = (c % n) * 1e7; + } +}; +var numToString = function () { + var i = 6; + var s = ''; + while (--i >= 0) { + if (s !== '' || i === 0 || data[i] !== 0) { + var t = String(data[i]); + s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t; + } + } return s; +}; +var pow = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); +}; +var log = function (x) { + var n = 0; + var x2 = x; + while (x2 >= 4096) { + n += 12; + x2 /= 4096; + } + while (x2 >= 2) { + n += 1; + x2 /= 2; + } return n; +}; + +$export($export.P + $export.F * (!!$toFixed && ( + 0.00008.toFixed(3) !== '0.000' || + 0.9.toFixed(0) !== '1' || + 1.255.toFixed(2) !== '1.25' || + 1000000000000000128.0.toFixed(0) !== '1000000000000000128' +) || !_dereq_(42)(function () { + // V8 ~ Android 4.3- + $toFixed.call({}); +})), 'Number', { + toFixed: function toFixed(fractionDigits) { + var x = aNumberValue(this, ERROR); + var f = toInteger(fractionDigits); + var s = ''; + var m = ZERO; + var e, z, j, k; + if (f < 0 || f > 20) throw RangeError(ERROR); + // eslint-disable-next-line no-self-compare + if (x != x) return 'NaN'; + if (x <= -1e21 || x >= 1e21) return String(x); + if (x < 0) { + s = '-'; + x = -x; + } + if (x > 1e-21) { + e = log(x * pow(2, 69, 1)) - 69; + z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if (e > 0) { + multiply(0, z); + j = f; + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + multiply(pow(10, j, 1), 0); + j = e - 1; + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + m = numToString(); + } else { + multiply(0, z); + multiply(1 << -e, 0); + m = numToString() + repeat.call(ZERO, f); + } + } + if (f > 0) { + k = m.length; + m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f)); + } else { + m = s + m; + } return m; + } +}); + +},{"109":109,"115":115,"12":12,"40":40,"42":42}],188:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $fails = _dereq_(42); +var aNumberValue = _dereq_(12); +var $toPrecision = 1.0.toPrecision; + +$export($export.P + $export.F * ($fails(function () { + // IE7- + return $toPrecision.call(1, undefined) !== '1'; +}) || !$fails(function () { + // V8 ~ Android 4.3- + $toPrecision.call({}); +})), 'Number', { + toPrecision: function toPrecision(precision) { + var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!'); + return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision); + } +}); + +},{"12":12,"40":40,"42":42}],189:[function(_dereq_,module,exports){ +// 19.1.3.1 Object.assign(target, source) +var $export = _dereq_(40); + +$export($export.S + $export.F, 'Object', { assign: _dereq_(73) }); + +},{"40":40,"73":73}],190:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +$export($export.S, 'Object', { create: _dereq_(74) }); + +},{"40":40,"74":74}],191:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) +$export($export.S + $export.F * !_dereq_(36), 'Object', { defineProperties: _dereq_(76) }); + +},{"36":36,"40":40,"76":76}],192:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !_dereq_(36), 'Object', { defineProperty: _dereq_(75).f }); + +},{"36":36,"40":40,"75":75}],193:[function(_dereq_,module,exports){ +// 19.1.2.5 Object.freeze(O) +var isObject = _dereq_(57); +var meta = _dereq_(70).onFreeze; + +_dereq_(85)('freeze', function ($freeze) { + return function freeze(it) { + return $freeze && isObject(it) ? $freeze(meta(it)) : it; + }; +}); + +},{"57":57,"70":70,"85":85}],194:[function(_dereq_,module,exports){ +// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) +var toIObject = _dereq_(116); +var $getOwnPropertyDescriptor = _dereq_(77).f; + +_dereq_(85)('getOwnPropertyDescriptor', function () { + return function getOwnPropertyDescriptor(it, key) { + return $getOwnPropertyDescriptor(toIObject(it), key); + }; +}); + +},{"116":116,"77":77,"85":85}],195:[function(_dereq_,module,exports){ +// 19.1.2.7 Object.getOwnPropertyNames(O) +_dereq_(85)('getOwnPropertyNames', function () { + return _dereq_(78).f; +}); + +},{"78":78,"85":85}],196:[function(_dereq_,module,exports){ +// 19.1.2.9 Object.getPrototypeOf(O) +var toObject = _dereq_(118); +var $getPrototypeOf = _dereq_(81); + +_dereq_(85)('getPrototypeOf', function () { + return function getPrototypeOf(it) { + return $getPrototypeOf(toObject(it)); + }; +}); + +},{"118":118,"81":81,"85":85}],197:[function(_dereq_,module,exports){ +// 19.1.2.11 Object.isExtensible(O) +var isObject = _dereq_(57); + +_dereq_(85)('isExtensible', function ($isExtensible) { + return function isExtensible(it) { + return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false; + }; +}); + +},{"57":57,"85":85}],198:[function(_dereq_,module,exports){ +// 19.1.2.12 Object.isFrozen(O) +var isObject = _dereq_(57); + +_dereq_(85)('isFrozen', function ($isFrozen) { + return function isFrozen(it) { + return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true; + }; +}); + +},{"57":57,"85":85}],199:[function(_dereq_,module,exports){ +// 19.1.2.13 Object.isSealed(O) +var isObject = _dereq_(57); + +_dereq_(85)('isSealed', function ($isSealed) { + return function isSealed(it) { + return isObject(it) ? $isSealed ? $isSealed(it) : false : true; + }; +}); + +},{"57":57,"85":85}],200:[function(_dereq_,module,exports){ +// 19.1.3.10 Object.is(value1, value2) +var $export = _dereq_(40); +$export($export.S, 'Object', { is: _dereq_(97) }); + +},{"40":40,"97":97}],201:[function(_dereq_,module,exports){ +// 19.1.2.14 Object.keys(O) +var toObject = _dereq_(118); +var $keys = _dereq_(83); + +_dereq_(85)('keys', function () { + return function keys(it) { + return $keys(toObject(it)); + }; +}); + +},{"118":118,"83":83,"85":85}],202:[function(_dereq_,module,exports){ +// 19.1.2.15 Object.preventExtensions(O) +var isObject = _dereq_(57); +var meta = _dereq_(70).onFreeze; + +_dereq_(85)('preventExtensions', function ($preventExtensions) { + return function preventExtensions(it) { + return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it; + }; +}); + +},{"57":57,"70":70,"85":85}],203:[function(_dereq_,module,exports){ +// 19.1.2.17 Object.seal(O) +var isObject = _dereq_(57); +var meta = _dereq_(70).onFreeze; + +_dereq_(85)('seal', function ($seal) { + return function seal(it) { + return $seal && isObject(it) ? $seal(meta(it)) : it; + }; +}); + +},{"57":57,"70":70,"85":85}],204:[function(_dereq_,module,exports){ +// 19.1.3.19 Object.setPrototypeOf(O, proto) +var $export = _dereq_(40); +$export($export.S, 'Object', { setPrototypeOf: _dereq_(98).set }); + +},{"40":40,"98":98}],205:[function(_dereq_,module,exports){ +'use strict'; +// 19.1.3.6 Object.prototype.toString() +var classof = _dereq_(25); +var test = {}; +test[_dereq_(128)('toStringTag')] = 'z'; +if (test + '' != '[object z]') { + _dereq_(94)(Object.prototype, 'toString', function toString() { + return '[object ' + classof(this) + ']'; + }, true); +} + +},{"128":128,"25":25,"94":94}],206:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var $parseFloat = _dereq_(88); +// 18.2.4 parseFloat(string) +$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat }); + +},{"40":40,"88":88}],207:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var $parseInt = _dereq_(89); +// 18.2.5 parseInt(string, radix) +$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt }); + +},{"40":40,"89":89}],208:[function(_dereq_,module,exports){ +'use strict'; +var LIBRARY = _dereq_(65); +var global = _dereq_(46); +var ctx = _dereq_(32); +var classof = _dereq_(25); +var $export = _dereq_(40); +var isObject = _dereq_(57); +var aFunction = _dereq_(11); +var anInstance = _dereq_(15); +var forOf = _dereq_(45); +var speciesConstructor = _dereq_(103); +var task = _dereq_(112).set; +var microtask = _dereq_(71)(); +var newPromiseCapabilityModule = _dereq_(72); +var perform = _dereq_(90); +var userAgent = _dereq_(124); +var promiseResolve = _dereq_(91); +var PROMISE = 'Promise'; +var TypeError = global.TypeError; +var process = global.process; +var versions = process && process.versions; +var v8 = versions && versions.v8 || ''; +var $Promise = global[PROMISE]; +var isNode = classof(process) == 'process'; +var empty = function () { /* empty */ }; +var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; +var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; + +var USE_NATIVE = !!function () { + try { + // correct subclassing with @@species support + var promise = $Promise.resolve(1); + var FakePromise = (promise.constructor = {})[_dereq_(128)('species')] = function (exec) { + exec(empty, empty); + }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return (isNode || typeof PromiseRejectionEvent == 'function') + && promise.then(empty) instanceof FakePromise + // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // we can't detect it synchronously, so just check versions + && v8.indexOf('6.6') !== 0 + && userAgent.indexOf('Chrome/66') === -1; + } catch (e) { /* empty */ } +}(); + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; +var notify = function (promise, isReject) { + if (promise._n) return; + promise._n = true; + var chain = promise._c; + microtask(function () { + var value = promise._v; + var ok = promise._s == 1; + var i = 0; + var run = function (reaction) { + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (promise._h == 2) onHandleUnhandled(promise); + promise._h = 1; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // may throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (e) { + if (domain && !exited) domain.exit(); + reject(e); + } + }; + while (chain.length > i) run(chain[i++]); // variable length - can't use forEach + promise._c = []; + promise._n = false; + if (isReject && !promise._h) onUnhandled(promise); + }); +}; +var onUnhandled = function (promise) { + task.call(global, function () { + var value = promise._v; + var unhandled = isUnhandled(promise); + var result, handler, console; + if (unhandled) { + result = perform(function () { + if (isNode) { + process.emit('unhandledRejection', value, promise); + } else if (handler = global.onunhandledrejection) { + handler({ promise: promise, reason: value }); + } else if ((console = global.console) && console.error) { + console.error('Unhandled promise rejection', value); + } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + promise._h = isNode || isUnhandled(promise) ? 2 : 1; + } promise._a = undefined; + if (unhandled && result.e) throw result.v; + }); +}; +var isUnhandled = function (promise) { + return promise._h !== 1 && (promise._a || promise._c).length === 0; +}; +var onHandleUnhandled = function (promise) { + task.call(global, function () { + var handler; + if (isNode) { + process.emit('rejectionHandled', promise); + } else if (handler = global.onrejectionhandled) { + handler({ promise: promise, reason: promise._v }); + } + }); +}; +var $reject = function (value) { + var promise = this; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + promise._v = value; + promise._s = 2; + if (!promise._a) promise._a = promise._c.slice(); + notify(promise, true); +}; +var $resolve = function (value) { + var promise = this; + var then; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + try { + if (promise === value) throw TypeError("Promise can't be resolved itself"); + if (then = isThenable(value)) { + microtask(function () { + var wrapper = { _w: promise, _d: false }; // wrap + try { + then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); + } catch (e) { + $reject.call(wrapper, e); + } + }); + } else { + promise._v = value; + promise._s = 1; + notify(promise, false); + } + } catch (e) { + $reject.call({ _w: promise, _d: false }, e); // wrap + } +}; + +// constructor polyfill +if (!USE_NATIVE) { + // 25.4.3.1 Promise(executor) + $Promise = function Promise(executor) { + anInstance(this, $Promise, PROMISE, '_h'); + aFunction(executor); + Internal.call(this); + try { + executor(ctx($resolve, this, 1), ctx($reject, this, 1)); + } catch (err) { + $reject.call(this, err); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + this._c = []; // <- awaiting reactions + this._a = undefined; // <- checked in isUnhandled reactions + this._s = 0; // <- state + this._d = false; // <- done + this._v = undefined; // <- value + this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled + this._n = false; // <- notify + }; + Internal.prototype = _dereq_(93)($Promise.prototype, { + // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) + then: function then(onFulfilled, onRejected) { + var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = isNode ? process.domain : undefined; + this._c.push(reaction); + if (this._a) this._a.push(reaction); + if (this._s) notify(this, false); + return reaction.promise; + }, + // 25.4.5.1 Promise.prototype.catch(onRejected) + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + this.promise = promise; + this.resolve = ctx($resolve, promise, 1); + this.reject = ctx($reject, promise, 1); + }; + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === $Promise || C === Wrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); +_dereq_(100)($Promise, PROMISE); +_dereq_(99)(PROMISE); +Wrapper = _dereq_(30)[PROMISE]; + +// statics +$export($export.S + $export.F * !USE_NATIVE, PROMISE, { + // 25.4.4.5 Promise.reject(r) + reject: function reject(r) { + var capability = newPromiseCapability(this); + var $$reject = capability.reject; + $$reject(r); + return capability.promise; + } +}); +$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { + // 25.4.4.6 Promise.resolve(x) + resolve: function resolve(x) { + return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); + } +}); +$export($export.S + $export.F * !(USE_NATIVE && _dereq_(62)(function (iter) { + $Promise.all(iter)['catch'](empty); +})), PROMISE, { + // 25.4.4.1 Promise.all(iterable) + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var values = []; + var index = 0; + var remaining = 1; + forOf(iterable, false, function (promise) { + var $index = index++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + C.resolve(promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[$index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.e) reject(result.v); + return capability.promise; + }, + // 25.4.4.4 Promise.race(iterable) + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = perform(function () { + forOf(iterable, false, function (promise) { + C.resolve(promise).then(capability.resolve, reject); + }); + }); + if (result.e) reject(result.v); + return capability.promise; + } +}); + +},{"100":100,"103":103,"11":11,"112":112,"124":124,"128":128,"15":15,"25":25,"30":30,"32":32,"40":40,"45":45,"46":46,"57":57,"62":62,"65":65,"71":71,"72":72,"90":90,"91":91,"93":93,"99":99}],209:[function(_dereq_,module,exports){ +// 26.1.1 Reflect.apply(target, thisArgument, argumentsList) +var $export = _dereq_(40); +var aFunction = _dereq_(11); +var anObject = _dereq_(16); +var rApply = (_dereq_(46).Reflect || {}).apply; +var fApply = Function.apply; +// MS Edge argumentsList argument is optional +$export($export.S + $export.F * !_dereq_(42)(function () { + rApply(function () { /* empty */ }); +}), 'Reflect', { + apply: function apply(target, thisArgument, argumentsList) { + var T = aFunction(target); + var L = anObject(argumentsList); + return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L); + } +}); + +},{"11":11,"16":16,"40":40,"42":42,"46":46}],210:[function(_dereq_,module,exports){ +// 26.1.2 Reflect.construct(target, argumentsList [, newTarget]) +var $export = _dereq_(40); +var create = _dereq_(74); +var aFunction = _dereq_(11); +var anObject = _dereq_(16); +var isObject = _dereq_(57); +var fails = _dereq_(42); +var bind = _dereq_(24); +var rConstruct = (_dereq_(46).Reflect || {}).construct; + +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(rConstruct(function () { /* empty */ }, [], F) instanceof F); +}); +var ARGS_BUG = !fails(function () { + rConstruct(function () { /* empty */ }); +}); + +$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', { + construct: function construct(Target, args /* , newTarget */) { + aFunction(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget); + if (Target == newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (bind.apply(Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = create(isObject(proto) ? proto : Object.prototype); + var result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } +}); + +},{"11":11,"16":16,"24":24,"40":40,"42":42,"46":46,"57":57,"74":74}],211:[function(_dereq_,module,exports){ +// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes) +var dP = _dereq_(75); +var $export = _dereq_(40); +var anObject = _dereq_(16); +var toPrimitive = _dereq_(119); + +// MS Edge has broken Reflect.defineProperty - throwing instead of returning false +$export($export.S + $export.F * _dereq_(42)(function () { + // eslint-disable-next-line no-undef + Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 }); +}), 'Reflect', { + defineProperty: function defineProperty(target, propertyKey, attributes) { + anObject(target); + propertyKey = toPrimitive(propertyKey, true); + anObject(attributes); + try { + dP.f(target, propertyKey, attributes); + return true; + } catch (e) { + return false; + } + } +}); + +},{"119":119,"16":16,"40":40,"42":42,"75":75}],212:[function(_dereq_,module,exports){ +// 26.1.4 Reflect.deleteProperty(target, propertyKey) +var $export = _dereq_(40); +var gOPD = _dereq_(77).f; +var anObject = _dereq_(16); + +$export($export.S, 'Reflect', { + deleteProperty: function deleteProperty(target, propertyKey) { + var desc = gOPD(anObject(target), propertyKey); + return desc && !desc.configurable ? false : delete target[propertyKey]; + } +}); + +},{"16":16,"40":40,"77":77}],213:[function(_dereq_,module,exports){ +'use strict'; +// 26.1.5 Reflect.enumerate(target) +var $export = _dereq_(40); +var anObject = _dereq_(16); +var Enumerate = function (iterated) { + this._t = anObject(iterated); // target + this._i = 0; // next index + var keys = this._k = []; // keys + var key; + for (key in iterated) keys.push(key); +}; +_dereq_(60)(Enumerate, 'Object', function () { + var that = this; + var keys = that._k; + var key; + do { + if (that._i >= keys.length) return { value: undefined, done: true }; + } while (!((key = keys[that._i++]) in that._t)); + return { value: key, done: false }; +}); + +$export($export.S, 'Reflect', { + enumerate: function enumerate(target) { + return new Enumerate(target); + } +}); + +},{"16":16,"40":40,"60":60}],214:[function(_dereq_,module,exports){ +// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey) +var gOPD = _dereq_(77); +var $export = _dereq_(40); +var anObject = _dereq_(16); + +$export($export.S, 'Reflect', { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { + return gOPD.f(anObject(target), propertyKey); + } +}); + +},{"16":16,"40":40,"77":77}],215:[function(_dereq_,module,exports){ +// 26.1.8 Reflect.getPrototypeOf(target) +var $export = _dereq_(40); +var getProto = _dereq_(81); +var anObject = _dereq_(16); + +$export($export.S, 'Reflect', { + getPrototypeOf: function getPrototypeOf(target) { + return getProto(anObject(target)); + } +}); + +},{"16":16,"40":40,"81":81}],216:[function(_dereq_,module,exports){ +// 26.1.6 Reflect.get(target, propertyKey [, receiver]) +var gOPD = _dereq_(77); +var getPrototypeOf = _dereq_(81); +var has = _dereq_(47); +var $export = _dereq_(40); +var isObject = _dereq_(57); +var anObject = _dereq_(16); + +function get(target, propertyKey /* , receiver */) { + var receiver = arguments.length < 3 ? target : arguments[2]; + var desc, proto; + if (anObject(target) === receiver) return target[propertyKey]; + if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value') + ? desc.value + : desc.get !== undefined + ? desc.get.call(receiver) + : undefined; + if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver); +} + +$export($export.S, 'Reflect', { get: get }); + +},{"16":16,"40":40,"47":47,"57":57,"77":77,"81":81}],217:[function(_dereq_,module,exports){ +// 26.1.9 Reflect.has(target, propertyKey) +var $export = _dereq_(40); + +$export($export.S, 'Reflect', { + has: function has(target, propertyKey) { + return propertyKey in target; + } +}); + +},{"40":40}],218:[function(_dereq_,module,exports){ +// 26.1.10 Reflect.isExtensible(target) +var $export = _dereq_(40); +var anObject = _dereq_(16); +var $isExtensible = Object.isExtensible; + +$export($export.S, 'Reflect', { + isExtensible: function isExtensible(target) { + anObject(target); + return $isExtensible ? $isExtensible(target) : true; + } +}); + +},{"16":16,"40":40}],219:[function(_dereq_,module,exports){ +// 26.1.11 Reflect.ownKeys(target) +var $export = _dereq_(40); + +$export($export.S, 'Reflect', { ownKeys: _dereq_(87) }); + +},{"40":40,"87":87}],220:[function(_dereq_,module,exports){ +// 26.1.12 Reflect.preventExtensions(target) +var $export = _dereq_(40); +var anObject = _dereq_(16); +var $preventExtensions = Object.preventExtensions; + +$export($export.S, 'Reflect', { + preventExtensions: function preventExtensions(target) { + anObject(target); + try { + if ($preventExtensions) $preventExtensions(target); + return true; + } catch (e) { + return false; + } + } +}); + +},{"16":16,"40":40}],221:[function(_dereq_,module,exports){ +// 26.1.14 Reflect.setPrototypeOf(target, proto) +var $export = _dereq_(40); +var setProto = _dereq_(98); + +if (setProto) $export($export.S, 'Reflect', { + setPrototypeOf: function setPrototypeOf(target, proto) { + setProto.check(target, proto); + try { + setProto.set(target, proto); + return true; + } catch (e) { + return false; + } + } +}); + +},{"40":40,"98":98}],222:[function(_dereq_,module,exports){ +// 26.1.13 Reflect.set(target, propertyKey, V [, receiver]) +var dP = _dereq_(75); +var gOPD = _dereq_(77); +var getPrototypeOf = _dereq_(81); +var has = _dereq_(47); +var $export = _dereq_(40); +var createDesc = _dereq_(92); +var anObject = _dereq_(16); +var isObject = _dereq_(57); + +function set(target, propertyKey, V /* , receiver */) { + var receiver = arguments.length < 4 ? target : arguments[3]; + var ownDesc = gOPD.f(anObject(target), propertyKey); + var existingDescriptor, proto; + if (!ownDesc) { + if (isObject(proto = getPrototypeOf(target))) { + return set(proto, propertyKey, V, receiver); + } + ownDesc = createDesc(0); + } + if (has(ownDesc, 'value')) { + if (ownDesc.writable === false || !isObject(receiver)) return false; + if (existingDescriptor = gOPD.f(receiver, propertyKey)) { + if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; + existingDescriptor.value = V; + dP.f(receiver, propertyKey, existingDescriptor); + } else dP.f(receiver, propertyKey, createDesc(0, V)); + return true; + } + return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true); +} + +$export($export.S, 'Reflect', { set: set }); + +},{"16":16,"40":40,"47":47,"57":57,"75":75,"77":77,"81":81,"92":92}],223:[function(_dereq_,module,exports){ +var global = _dereq_(46); +var inheritIfRequired = _dereq_(51); +var dP = _dereq_(75).f; +var gOPN = _dereq_(79).f; +var isRegExp = _dereq_(58); +var $flags = _dereq_(44); +var $RegExp = global.RegExp; +var Base = $RegExp; +var proto = $RegExp.prototype; +var re1 = /a/g; +var re2 = /a/g; +// "new" creates a new object, old webkit buggy here +var CORRECT_NEW = new $RegExp(re1) !== re1; + +if (_dereq_(36) && (!CORRECT_NEW || _dereq_(42)(function () { + re2[_dereq_(128)('match')] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; +}))) { + $RegExp = function RegExp(p, f) { + var tiRE = this instanceof $RegExp; + var piRE = isRegExp(p); + var fiU = f === undefined; + return !tiRE && piRE && p.constructor === $RegExp && fiU ? p + : inheritIfRequired(CORRECT_NEW + ? new Base(piRE && !fiU ? p.source : p, f) + : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) + , tiRE ? this : proto, $RegExp); + }; + var proxy = function (key) { + key in $RegExp || dP($RegExp, key, { + configurable: true, + get: function () { return Base[key]; }, + set: function (it) { Base[key] = it; } + }); + }; + for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); + proto.constructor = $RegExp; + $RegExp.prototype = proto; + _dereq_(94)(global, 'RegExp', $RegExp); +} + +_dereq_(99)('RegExp'); + +},{"128":128,"36":36,"42":42,"44":44,"46":46,"51":51,"58":58,"75":75,"79":79,"94":94,"99":99}],224:[function(_dereq_,module,exports){ +'use strict'; +var regexpExec = _dereq_(96); +_dereq_(40)({ + target: 'RegExp', + proto: true, + forced: regexpExec !== /./.exec +}, { + exec: regexpExec +}); + +},{"40":40,"96":96}],225:[function(_dereq_,module,exports){ +// 21.2.5.3 get RegExp.prototype.flags() +if (_dereq_(36) && /./g.flags != 'g') _dereq_(75).f(RegExp.prototype, 'flags', { + configurable: true, + get: _dereq_(44) +}); + +},{"36":36,"44":44,"75":75}],226:[function(_dereq_,module,exports){ +'use strict'; + +var anObject = _dereq_(16); +var toLength = _dereq_(117); +var advanceStringIndex = _dereq_(14); +var regExpExec = _dereq_(95); + +// @@match logic +_dereq_(43)('match', 1, function (defined, MATCH, $match, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.github.io/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[MATCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative($match, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + if (!rx.global) return regExpExec(rx, S); + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + +},{"117":117,"14":14,"16":16,"43":43,"95":95}],227:[function(_dereq_,module,exports){ +'use strict'; + +var anObject = _dereq_(16); +var toObject = _dereq_(118); +var toLength = _dereq_(117); +var toInteger = _dereq_(115); +var advanceStringIndex = _dereq_(14); +var regExpExec = _dereq_(95); +var max = Math.max; +var min = Math.min; +var floor = Math.floor; +var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// @@replace logic +_dereq_(43)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = defined(this); + var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; + return fn !== undefined + ? fn.call(searchValue, O, replaceValue) + : $replace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + var res = maybeCallNative($replace, regexp, this, replaceValue); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + results.push(result); + if (!global) break; + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + var matched = String(result[0]); + var position = max(min(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return $replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return ch; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return ch; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return ch; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } +}); + +},{"115":115,"117":117,"118":118,"14":14,"16":16,"43":43,"95":95}],228:[function(_dereq_,module,exports){ +'use strict'; + +var anObject = _dereq_(16); +var sameValue = _dereq_(97); +var regExpExec = _dereq_(95); + +// @@search logic +_dereq_(43)('search', 1, function (defined, SEARCH, $search, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.github.io/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[SEARCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search + function (regexp) { + var res = maybeCallNative($search, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; +}); + +},{"16":16,"43":43,"95":95,"97":97}],229:[function(_dereq_,module,exports){ +'use strict'; + +var isRegExp = _dereq_(58); +var anObject = _dereq_(16); +var speciesConstructor = _dereq_(103); +var advanceStringIndex = _dereq_(14); +var toLength = _dereq_(117); +var callRegExpExec = _dereq_(95); +var regexpExec = _dereq_(96); +var $min = Math.min; +var $push = [].push; +var $SPLIT = 'split'; +var LENGTH = 'length'; +var LAST_INDEX = 'lastIndex'; + +// eslint-disable-next-line no-empty +var SUPPORTS_Y = !!(function () { try { return new RegExp('x', 'y'); } catch (e) {} })(); + +// @@split logic +_dereq_(43)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { + var internalSplit; + if ( + 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || + 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || + 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || + '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || + '.'[$SPLIT](/()()/)[LENGTH] > 1 || + ''[$SPLIT](/.?/)[LENGTH] + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(this); + if (separator === undefined && limit === 0) return []; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) return $split.call(string, separator, limit); + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + var splitLimit = limit === undefined ? 4294967295 : limit >>> 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy[LAST_INDEX]; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); + lastLength = match[0][LENGTH]; + lastLastIndex = lastIndex; + if (output[LENGTH] >= splitLimit) break; + } + if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop + } + if (lastLastIndex === string[LENGTH]) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; + }; + // Chakra, V8 + } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); + }; + } else { + internalSplit = $split; + } + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = defined(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? 0xffffffff : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; +}); + +},{"103":103,"117":117,"14":14,"16":16,"43":43,"58":58,"95":95,"96":96}],230:[function(_dereq_,module,exports){ +'use strict'; +_dereq_(225); +var anObject = _dereq_(16); +var $flags = _dereq_(44); +var DESCRIPTORS = _dereq_(36); +var TO_STRING = 'toString'; +var $toString = /./[TO_STRING]; + +var define = function (fn) { + _dereq_(94)(RegExp.prototype, TO_STRING, fn, true); +}; + +// 21.2.5.14 RegExp.prototype.toString() +if (_dereq_(42)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { + define(function toString() { + var R = anObject(this); + return '/'.concat(R.source, '/', + 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); + }); +// FF44- RegExp#toString has a wrong name +} else if ($toString.name != TO_STRING) { + define(function toString() { + return $toString.call(this); + }); +} + +},{"16":16,"225":225,"36":36,"42":42,"44":44,"94":94}],231:[function(_dereq_,module,exports){ +'use strict'; +var strong = _dereq_(27); +var validate = _dereq_(125); +var SET = 'Set'; + +// 23.2 Set Objects +module.exports = _dereq_(29)(SET, function (get) { + return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value) { + return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value); + } +}, strong); + +},{"125":125,"27":27,"29":29}],232:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.2 String.prototype.anchor(name) +_dereq_(107)('anchor', function (createHTML) { + return function anchor(name) { + return createHTML(this, 'a', 'name', name); + }; +}); + +},{"107":107}],233:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.3 String.prototype.big() +_dereq_(107)('big', function (createHTML) { + return function big() { + return createHTML(this, 'big', '', ''); + }; +}); + +},{"107":107}],234:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.4 String.prototype.blink() +_dereq_(107)('blink', function (createHTML) { + return function blink() { + return createHTML(this, 'blink', '', ''); + }; +}); + +},{"107":107}],235:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.5 String.prototype.bold() +_dereq_(107)('bold', function (createHTML) { + return function bold() { + return createHTML(this, 'b', '', ''); + }; +}); + +},{"107":107}],236:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $at = _dereq_(105)(false); +$export($export.P, 'String', { + // 21.1.3.3 String.prototype.codePointAt(pos) + codePointAt: function codePointAt(pos) { + return $at(this, pos); + } +}); + +},{"105":105,"40":40}],237:[function(_dereq_,module,exports){ +// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition]) +'use strict'; +var $export = _dereq_(40); +var toLength = _dereq_(117); +var context = _dereq_(106); +var ENDS_WITH = 'endsWith'; +var $endsWith = ''[ENDS_WITH]; + +$export($export.P + $export.F * _dereq_(41)(ENDS_WITH), 'String', { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = context(this, searchString, ENDS_WITH); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = toLength(that.length); + var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len); + var search = String(searchString); + return $endsWith + ? $endsWith.call(that, search, end) + : that.slice(end - search.length, end) === search; + } +}); + +},{"106":106,"117":117,"40":40,"41":41}],238:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.6 String.prototype.fixed() +_dereq_(107)('fixed', function (createHTML) { + return function fixed() { + return createHTML(this, 'tt', '', ''); + }; +}); + +},{"107":107}],239:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.7 String.prototype.fontcolor(color) +_dereq_(107)('fontcolor', function (createHTML) { + return function fontcolor(color) { + return createHTML(this, 'font', 'color', color); + }; +}); + +},{"107":107}],240:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.8 String.prototype.fontsize(size) +_dereq_(107)('fontsize', function (createHTML) { + return function fontsize(size) { + return createHTML(this, 'font', 'size', size); + }; +}); + +},{"107":107}],241:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var toAbsoluteIndex = _dereq_(113); +var fromCharCode = String.fromCharCode; +var $fromCodePoint = String.fromCodePoint; + +// length should be 1, old FF problem +$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { + // 21.1.2.2 String.fromCodePoint(...codePoints) + fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars + var res = []; + var aLen = arguments.length; + var i = 0; + var code; + while (aLen > i) { + code = +arguments[i++]; + if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point'); + res.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) + ); + } return res.join(''); + } +}); + +},{"113":113,"40":40}],242:[function(_dereq_,module,exports){ +// 21.1.3.7 String.prototype.includes(searchString, position = 0) +'use strict'; +var $export = _dereq_(40); +var context = _dereq_(106); +var INCLUDES = 'includes'; + +$export($export.P + $export.F * _dereq_(41)(INCLUDES), 'String', { + includes: function includes(searchString /* , position = 0 */) { + return !!~context(this, searchString, INCLUDES) + .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +},{"106":106,"40":40,"41":41}],243:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.9 String.prototype.italics() +_dereq_(107)('italics', function (createHTML) { + return function italics() { + return createHTML(this, 'i', '', ''); + }; +}); + +},{"107":107}],244:[function(_dereq_,module,exports){ +'use strict'; +var $at = _dereq_(105)(true); + +// 21.1.3.27 String.prototype[@@iterator]() +_dereq_(61)(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; +}); + +},{"105":105,"61":61}],245:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.10 String.prototype.link(url) +_dereq_(107)('link', function (createHTML) { + return function link(url) { + return createHTML(this, 'a', 'href', url); + }; +}); + +},{"107":107}],246:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var toIObject = _dereq_(116); +var toLength = _dereq_(117); + +$export($export.S, 'String', { + // 21.1.2.4 String.raw(callSite, ...substitutions) + raw: function raw(callSite) { + var tpl = toIObject(callSite.raw); + var len = toLength(tpl.length); + var aLen = arguments.length; + var res = []; + var i = 0; + while (len > i) { + res.push(String(tpl[i++])); + if (i < aLen) res.push(String(arguments[i])); + } return res.join(''); + } +}); + +},{"116":116,"117":117,"40":40}],247:[function(_dereq_,module,exports){ +var $export = _dereq_(40); + +$export($export.P, 'String', { + // 21.1.3.13 String.prototype.repeat(count) + repeat: _dereq_(109) +}); + +},{"109":109,"40":40}],248:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.11 String.prototype.small() +_dereq_(107)('small', function (createHTML) { + return function small() { + return createHTML(this, 'small', '', ''); + }; +}); + +},{"107":107}],249:[function(_dereq_,module,exports){ +// 21.1.3.18 String.prototype.startsWith(searchString [, position ]) +'use strict'; +var $export = _dereq_(40); +var toLength = _dereq_(117); +var context = _dereq_(106); +var STARTS_WITH = 'startsWith'; +var $startsWith = ''[STARTS_WITH]; + +$export($export.P + $export.F * _dereq_(41)(STARTS_WITH), 'String', { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = context(this, searchString, STARTS_WITH); + var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = String(searchString); + return $startsWith + ? $startsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } +}); + +},{"106":106,"117":117,"40":40,"41":41}],250:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.12 String.prototype.strike() +_dereq_(107)('strike', function (createHTML) { + return function strike() { + return createHTML(this, 'strike', '', ''); + }; +}); + +},{"107":107}],251:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.13 String.prototype.sub() +_dereq_(107)('sub', function (createHTML) { + return function sub() { + return createHTML(this, 'sub', '', ''); + }; +}); + +},{"107":107}],252:[function(_dereq_,module,exports){ +'use strict'; +// B.2.3.14 String.prototype.sup() +_dereq_(107)('sup', function (createHTML) { + return function sup() { + return createHTML(this, 'sup', '', ''); + }; +}); + +},{"107":107}],253:[function(_dereq_,module,exports){ +'use strict'; +// 21.1.3.25 String.prototype.trim() +_dereq_(110)('trim', function ($trim) { + return function trim() { + return $trim(this, 3); + }; +}); + +},{"110":110}],254:[function(_dereq_,module,exports){ +'use strict'; +// ECMAScript 6 symbols shim +var global = _dereq_(46); +var has = _dereq_(47); +var DESCRIPTORS = _dereq_(36); +var $export = _dereq_(40); +var redefine = _dereq_(94); +var META = _dereq_(70).KEY; +var $fails = _dereq_(42); +var shared = _dereq_(102); +var setToStringTag = _dereq_(100); +var uid = _dereq_(123); +var wks = _dereq_(128); +var wksExt = _dereq_(127); +var wksDefine = _dereq_(126); +var enumKeys = _dereq_(39); +var isArray = _dereq_(55); +var anObject = _dereq_(16); +var isObject = _dereq_(57); +var toIObject = _dereq_(116); +var toPrimitive = _dereq_(119); +var createDesc = _dereq_(92); +var _create = _dereq_(74); +var gOPNExt = _dereq_(78); +var $GOPD = _dereq_(77); +var $DP = _dereq_(75); +var $keys = _dereq_(83); +var gOPD = $GOPD.f; +var dP = $DP.f; +var gOPN = gOPNExt.f; +var $Symbol = global.Symbol; +var $JSON = global.JSON; +var _stringify = $JSON && $JSON.stringify; +var PROTOTYPE = 'prototype'; +var HIDDEN = wks('_hidden'); +var TO_PRIMITIVE = wks('toPrimitive'); +var isEnum = {}.propertyIsEnumerable; +var SymbolRegistry = shared('symbol-registry'); +var AllSymbols = shared('symbols'); +var OPSymbols = shared('op-symbols'); +var ObjectProto = Object[PROTOTYPE]; +var USE_NATIVE = typeof $Symbol == 'function'; +var QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDesc = DESCRIPTORS && $fails(function () { + return _create(dP({}, 'a', { + get: function () { return dP(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (it, key, D) { + var protoDesc = gOPD(ObjectProto, key); + if (protoDesc) delete ObjectProto[key]; + dP(it, key, D); + if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); +} : dP; + +var wrap = function (tag) { + var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); + sym._k = tag; + return sym; +}; + +var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + return it instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(it, key, D) { + if (it === ObjectProto) $defineProperty(OPSymbols, key, D); + anObject(it); + key = toPrimitive(key, true); + anObject(D); + if (has(AllSymbols, key)) { + if (!D.enumerable) { + if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _create(D, { enumerable: createDesc(0, false) }); + } return setSymbolDesc(it, key, D); + } return dP(it, key, D); +}; +var $defineProperties = function defineProperties(it, P) { + anObject(it); + var keys = enumKeys(P = toIObject(P)); + var i = 0; + var l = keys.length; + var key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; +}; +var $create = function create(it, P) { + return P === undefined ? _create(it) : $defineProperties(_create(it), P); +}; +var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key = toPrimitive(key, true)); + if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; +}; +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + it = toIObject(it); + key = toPrimitive(key, true); + if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; + var D = gOPD(it, key); + if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; +}; +var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = gOPN(toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); + } return result; +}; +var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var IS_OP = it === ObjectProto; + var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); + } return result; +}; + +// 19.4.1.1 Symbol([description]) +if (!USE_NATIVE) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); + var tag = uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function (value) { + if (this === ObjectProto) $set.call(OPSymbols, value); + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + }; + if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); + return wrap(tag); + }; + redefine($Symbol[PROTOTYPE], 'toString', function toString() { + return this._k; + }); + + $GOPD.f = $getOwnPropertyDescriptor; + $DP.f = $defineProperty; + _dereq_(79).f = gOPNExt.f = $getOwnPropertyNames; + _dereq_(84).f = $propertyIsEnumerable; + _dereq_(80).f = $getOwnPropertySymbols; + + if (DESCRIPTORS && !_dereq_(65)) { + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + wksExt.f = function (name) { + return wrap(wks(name)); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); + +for (var es6Symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' +).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); + +for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); + +$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function (key) { + return has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); + for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; + }, + useSetter: function () { setter = true; }, + useSimple: function () { setter = false; } +}); + +$export($export.S + $export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// 24.3.2 JSON.stringify(value [, replacer [, space]]) +$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; +})), 'JSON', { + stringify: function stringify(it) { + var args = [it]; + var i = 1; + var replacer, $replacer; + while (arguments.length > i) args.push(arguments[i++]); + $replacer = replacer = args[1]; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } +}); + +// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) +$Symbol[PROTOTYPE][TO_PRIMITIVE] || _dereq_(48)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +// 19.4.3.5 Symbol.prototype[@@toStringTag] +setToStringTag($Symbol, 'Symbol'); +// 20.2.1.9 Math[@@toStringTag] +setToStringTag(Math, 'Math', true); +// 24.3.3 JSON[@@toStringTag] +setToStringTag(global.JSON, 'JSON', true); + +},{"100":100,"102":102,"116":116,"119":119,"123":123,"126":126,"127":127,"128":128,"16":16,"36":36,"39":39,"40":40,"42":42,"46":46,"47":47,"48":48,"55":55,"57":57,"65":65,"70":70,"74":74,"75":75,"77":77,"78":78,"79":79,"80":80,"83":83,"84":84,"92":92,"94":94}],255:[function(_dereq_,module,exports){ +'use strict'; +var $export = _dereq_(40); +var $typed = _dereq_(122); +var buffer = _dereq_(121); +var anObject = _dereq_(16); +var toAbsoluteIndex = _dereq_(113); +var toLength = _dereq_(117); +var isObject = _dereq_(57); +var ArrayBuffer = _dereq_(46).ArrayBuffer; +var speciesConstructor = _dereq_(103); +var $ArrayBuffer = buffer.ArrayBuffer; +var $DataView = buffer.DataView; +var $isView = $typed.ABV && ArrayBuffer.isView; +var $slice = $ArrayBuffer.prototype.slice; +var VIEW = $typed.VIEW; +var ARRAY_BUFFER = 'ArrayBuffer'; + +$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer }); + +$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, { + // 24.1.3.1 ArrayBuffer.isView(arg) + isView: function isView(it) { + return $isView && $isView(it) || isObject(it) && VIEW in it; + } +}); + +$export($export.P + $export.U + $export.F * _dereq_(42)(function () { + return !new $ArrayBuffer(2).slice(1, undefined).byteLength; +}), ARRAY_BUFFER, { + // 24.1.4.3 ArrayBuffer.prototype.slice(start, end) + slice: function slice(start, end) { + if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix + var len = anObject(this).byteLength; + var first = toAbsoluteIndex(start, len); + var fin = toAbsoluteIndex(end === undefined ? len : end, len); + var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first)); + var viewS = new $DataView(this); + var viewT = new $DataView(result); + var index = 0; + while (first < fin) { + viewT.setUint8(index++, viewS.getUint8(first++)); + } return result; + } +}); + +_dereq_(99)(ARRAY_BUFFER); + +},{"103":103,"113":113,"117":117,"121":121,"122":122,"16":16,"40":40,"42":42,"46":46,"57":57,"99":99}],256:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +$export($export.G + $export.W + $export.F * !_dereq_(122).ABV, { + DataView: _dereq_(121).DataView +}); + +},{"121":121,"122":122,"40":40}],257:[function(_dereq_,module,exports){ +_dereq_(120)('Float32', 4, function (init) { + return function Float32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],258:[function(_dereq_,module,exports){ +_dereq_(120)('Float64', 8, function (init) { + return function Float64Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],259:[function(_dereq_,module,exports){ +_dereq_(120)('Int16', 2, function (init) { + return function Int16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],260:[function(_dereq_,module,exports){ +_dereq_(120)('Int32', 4, function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],261:[function(_dereq_,module,exports){ +_dereq_(120)('Int8', 1, function (init) { + return function Int8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],262:[function(_dereq_,module,exports){ +_dereq_(120)('Uint16', 2, function (init) { + return function Uint16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],263:[function(_dereq_,module,exports){ +_dereq_(120)('Uint32', 4, function (init) { + return function Uint32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],264:[function(_dereq_,module,exports){ +_dereq_(120)('Uint8', 1, function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"120":120}],265:[function(_dereq_,module,exports){ +_dereq_(120)('Uint8', 1, function (init) { + return function Uint8ClampedArray(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}, true); + +},{"120":120}],266:[function(_dereq_,module,exports){ +'use strict'; +var each = _dereq_(20)(0); +var redefine = _dereq_(94); +var meta = _dereq_(70); +var assign = _dereq_(73); +var weak = _dereq_(28); +var isObject = _dereq_(57); +var fails = _dereq_(42); +var validate = _dereq_(125); +var WEAK_MAP = 'WeakMap'; +var getWeak = meta.getWeak; +var isExtensible = Object.isExtensible; +var uncaughtFrozenStore = weak.ufstore; +var tmp = {}; +var InternalMap; + +var wrapper = function (get) { + return function WeakMap() { + return get(this, arguments.length > 0 ? arguments[0] : undefined); + }; +}; + +var methods = { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key) { + if (isObject(key)) { + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); + return data ? data[this._i] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value) { + return weak.def(validate(this, WEAK_MAP), key, value); + } +}; + +// 23.3 WeakMap Objects +var $WeakMap = module.exports = _dereq_(29)(WEAK_MAP, wrapper, methods, weak, true, true); + +// IE11 WeakMap frozen keys fix +if (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) { + InternalMap = weak.getConstructor(wrapper, WEAK_MAP); + assign(InternalMap.prototype, methods); + meta.NEED = true; + each(['delete', 'has', 'get', 'set'], function (key) { + var proto = $WeakMap.prototype; + var method = proto[key]; + redefine(proto, key, function (a, b) { + // store frozen objects on internal weakmap shim + if (isObject(a) && !isExtensible(a)) { + if (!this._f) this._f = new InternalMap(); + var result = this._f[key](a, b); + return key == 'set' ? this : result; + // store all the rest on native weakmap + } return method.call(this, a, b); + }); + }); +} + +},{"125":125,"20":20,"28":28,"29":29,"42":42,"57":57,"70":70,"73":73,"94":94}],267:[function(_dereq_,module,exports){ +'use strict'; +var weak = _dereq_(28); +var validate = _dereq_(125); +var WEAK_SET = 'WeakSet'; + +// 23.4 WeakSet Objects +_dereq_(29)(WEAK_SET, function (get) { + return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value) { + return weak.def(validate(this, WEAK_SET), value, true); + } +}, weak, false, true); + +},{"125":125,"28":28,"29":29}],268:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/tc39/Array.prototype.includes +var $export = _dereq_(40); +var $includes = _dereq_(19)(true); + +$export($export.P, 'Array', { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +_dereq_(13)('includes'); + +},{"13":13,"19":19,"40":40}],269:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-object-values-entries +var $export = _dereq_(40); +var $entries = _dereq_(86)(true); + +$export($export.S, 'Object', { + entries: function entries(it) { + return $entries(it); + } +}); + +},{"40":40,"86":86}],270:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-object-getownpropertydescriptors +var $export = _dereq_(40); +var ownKeys = _dereq_(87); +var toIObject = _dereq_(116); +var gOPD = _dereq_(77); +var createProperty = _dereq_(31); + +$export($export.S, 'Object', { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIObject(object); + var getDesc = gOPD.f; + var keys = ownKeys(O); + var result = {}; + var i = 0; + var key, desc; + while (keys.length > i) { + desc = getDesc(O, key = keys[i++]); + if (desc !== undefined) createProperty(result, key, desc); + } + return result; + } +}); + +},{"116":116,"31":31,"40":40,"77":77,"87":87}],271:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-object-values-entries +var $export = _dereq_(40); +var $values = _dereq_(86)(false); + +$export($export.S, 'Object', { + values: function values(it) { + return $values(it); + } +}); + +},{"40":40,"86":86}],272:[function(_dereq_,module,exports){ +// https://github.com/tc39/proposal-promise-finally +'use strict'; +var $export = _dereq_(40); +var core = _dereq_(30); +var global = _dereq_(46); +var speciesConstructor = _dereq_(103); +var promiseResolve = _dereq_(91); + +$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { + var C = speciesConstructor(this, core.Promise || global.Promise); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); +} }); + +},{"103":103,"30":30,"40":40,"46":46,"91":91}],273:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/tc39/proposal-string-pad-start-end +var $export = _dereq_(40); +var $pad = _dereq_(108); +var userAgent = _dereq_(124); + +// https://github.com/zloirock/core-js/issues/280 +$export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', { + padEnd: function padEnd(maxLength /* , fillString = ' ' */) { + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); + } +}); + +},{"108":108,"124":124,"40":40}],274:[function(_dereq_,module,exports){ +'use strict'; +// https://github.com/tc39/proposal-string-pad-start-end +var $export = _dereq_(40); +var $pad = _dereq_(108); +var userAgent = _dereq_(124); + +// https://github.com/zloirock/core-js/issues/280 +$export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', { + padStart: function padStart(maxLength /* , fillString = ' ' */) { + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); + } +}); + +},{"108":108,"124":124,"40":40}],275:[function(_dereq_,module,exports){ +_dereq_(126)('asyncIterator'); + +},{"126":126}],276:[function(_dereq_,module,exports){ +var $iterators = _dereq_(140); +var getKeys = _dereq_(83); +var redefine = _dereq_(94); +var global = _dereq_(46); +var hide = _dereq_(48); +var Iterators = _dereq_(64); +var wks = _dereq_(128); +var ITERATOR = wks('iterator'); +var TO_STRING_TAG = wks('toStringTag'); +var ArrayValues = Iterators.Array; + +var DOMIterables = { + CSSRuleList: true, // TODO: Not spec compliant, should be false. + CSSStyleDeclaration: false, + CSSValueList: false, + ClientRectList: false, + DOMRectList: false, + DOMStringList: false, + DOMTokenList: true, + DataTransferItemList: false, + FileList: false, + HTMLAllCollection: false, + HTMLCollection: false, + HTMLFormElement: false, + HTMLSelectElement: false, + MediaList: true, // TODO: Not spec compliant, should be false. + MimeTypeArray: false, + NamedNodeMap: false, + NodeList: true, + PaintRequestList: false, + Plugin: false, + PluginArray: false, + SVGLengthList: false, + SVGNumberList: false, + SVGPathSegList: false, + SVGPointList: false, + SVGStringList: false, + SVGTransformList: false, + SourceBufferList: false, + StyleSheetList: true, // TODO: Not spec compliant, should be false. + TextTrackCueList: false, + TextTrackList: false, + TouchList: false +}; + +for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { + var NAME = collections[i]; + var explicit = DOMIterables[NAME]; + var Collection = global[NAME]; + var proto = Collection && Collection.prototype; + var key; + if (proto) { + if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); + if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = ArrayValues; + if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); + } +} + +},{"128":128,"140":140,"46":46,"48":48,"64":64,"83":83,"94":94}],277:[function(_dereq_,module,exports){ +var $export = _dereq_(40); +var $task = _dereq_(112); +$export($export.G + $export.B, { + setImmediate: $task.set, + clearImmediate: $task.clear +}); + +},{"112":112,"40":40}],278:[function(_dereq_,module,exports){ +// ie9- setTimeout & setInterval additional parameters fix +var global = _dereq_(46); +var $export = _dereq_(40); +var userAgent = _dereq_(124); +var slice = [].slice; +var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check +var wrap = function (set) { + return function (fn, time /* , ...args */) { + var boundArgs = arguments.length > 2; + var args = boundArgs ? slice.call(arguments, 2) : false; + return set(boundArgs ? function () { + // eslint-disable-next-line no-new-func + (typeof fn == 'function' ? fn : Function(fn)).apply(this, args); + } : fn, time); + }; +}; +$export($export.G + $export.B + $export.F * MSIE, { + setTimeout: wrap(global.setTimeout), + setInterval: wrap(global.setInterval) +}); + +},{"124":124,"40":40,"46":46}],279:[function(_dereq_,module,exports){ +_dereq_(278); +_dereq_(277); +_dereq_(276); +module.exports = _dereq_(30); + +},{"276":276,"277":277,"278":278,"30":30}],280:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +!(function(global) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + if (runtime) { + if (inModule) { + // If regeneratorRuntime is defined globally and we're in a module, + // make the exports object identical to regeneratorRuntime. + module.exports = runtime; + } + // Don't bother evaluating the rest of this file if the runtime was + // already defined globally. + return; + } + + // Define the runtime globally (as expected by generated code) as either + // module.exports (if we're in a module) or a new, empty object. + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + runtime.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + runtime.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + runtime.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + runtime.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + runtime.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + runtime.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return runtime.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + if (delegate.iterator.return) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + runtime.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + runtime.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; +})( + // In sloppy mode, unbound `this` refers to the global object, fallback to + // Function constructor if we're in global strict mode. That is sadly a form + // of indirect eval which violates Content Security Policy. + (function() { + return this || (typeof self === "object" && self); + })() || Function("return this")() +); + +},{}]},{},[1]); diff --git a/ant-design-vue-jeecg/public/cdn/font-icon/font_2316098_umqusozousr.js b/ant-design-vue-jeecg/public/cdn/font-icon/font_2316098_umqusozousr.js new file mode 100644 index 0000000..b098acf --- /dev/null +++ b/ant-design-vue-jeecg/public/cdn/font-icon/font_2316098_umqusozousr.js @@ -0,0 +1 @@ +!function(c){var a,t,e,i,l,n,o='',d=(d=document.getElementsByTagName("script"))[d.length-1].getAttribute("data-injectcss");if(d&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function h(){l||(l=!0,e())}a=function(){var c,a,t,e;(e=document.createElement("div")).innerHTML=o,o=null,(t=e.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",c=t,(a=document.body).firstChild?(e=c,(t=a.firstChild).parentNode.insertBefore(e,t)):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),a()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(e=a,i=c.document,l=!1,(n=function(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(n,50)}h()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,h())})}(window); \ No newline at end of file diff --git a/ant-design-vue-jeecg/public/color.less b/ant-design-vue-jeecg/public/color.less new file mode 100644 index 0000000..0f799c1 --- /dev/null +++ b/ant-design-vue-jeecg/public/color.less @@ -0,0 +1,7720 @@ +@primary-color: #1890ff; +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +.bezierEasingMixin() { + @functions: ~`(function() { + var NEWTON_ITERATIONS = 4; + var NEWTON_MIN_SLOPE = 0.001; + var SUBDIVISION_PRECISION = 0.0000001; + var SUBDIVISION_MAX_ITERATIONS = 10; + + var kSplineTableSize = 11; + var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); + + var float32ArraySupported = typeof Float32Array === 'function'; + + function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } + function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } + function C (aA1) { return 3.0 * aA1; } + + // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. + function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } + + // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. + function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); } + + function binarySubdivide (aX, aA, aB, mX1, mX2) { + var currentX, currentT, i = 0; + do { + currentT = aA + (aB - aA) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - aX; + if (currentX > 0.0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + return currentT; + } + + function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) { + for (var i = 0; i < NEWTON_ITERATIONS; ++i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + if (currentSlope === 0.0) { + return aGuessT; + } + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + } + + var BezierEasing = function (mX1, mY1, mX2, mY2) { + if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { + throw new Error('bezier x values must be in [0, 1] range'); + } + + // Precompute samples table + var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + if (mX1 !== mY1 || mX2 !== mY2) { + for (var i = 0; i < kSplineTableSize; ++i) { + sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); + } + } + + function getTForX (aX) { + var intervalStart = 0.0; + var currentSample = 1; + var lastSample = kSplineTableSize - 1; + + for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + --currentSample; + + // Interpolate to provide an initial guess for t + var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); + var guessForT = intervalStart + dist * kSampleStepSize; + + var initialSlope = getSlope(guessForT, mX1, mX2); + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT, mX1, mX2); + } else if (initialSlope === 0.0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); + } + } + + return function BezierEasing (x) { + if (mX1 === mY1 && mX2 === mY2) { + return x; // linear + } + // Because JavaScript number are imprecise, we should guarantee the extremes are right. + if (x === 0) { + return 0; + } + if (x === 1) { + return 1; + } + return calcBezier(getTForX(x), mY1, mY2); + }; + }; + + this.colorEasing = BezierEasing(0.26, 0.09, 0.37, 0.18); + // less 3 requires a return + return ''; +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.bezierEasingMixin(); + +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.tinyColorMixin() { + @functions: ~`(function() { +// TinyColor v1.4.1 +// https://github.com/bgrins/TinyColor +// 2016-07-07, Brian Grinstead, MIT License +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by inputToRgb + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; +} + +tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } +}; + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "#ff000000" or "ff000000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + +// Conversion Functions +// -------------------- + +// rgbToHsl, rgbToHsv, hslToRgb, hsvToRgb modified from: +// + +// rgbToRgb +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// rgbToHsl +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// hslToRgb +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// rgbToHsv +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// hsvToRgb +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// rgbToHex +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// rgbaToHex +// Converts an RGBA color plus alpha transparency to hex +// Assumes r, g, b are contained in the set [0, 255] and +// a in [0, 1]. Returns a 4 or 8 character rgba hex +function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); +} + +// rgbaToArgbHex +// Converts an RGBA color to an ARGB Hex8 string +// Rarely used, but required for "toFilter()" +function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); +} + +// equals +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; + +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + +function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function greyscale(color) { + return tinycolor(color).desaturate(100); +} + +function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); +} + +function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. +// Values outside of this range will be wrapped into this range. +function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); +} + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +} + +function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +} + +function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +} + +function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +} + +// Utility Functions +// --------------------- + +tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); +}; + +// Readability Functions +// --------------------- +// false +// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false +tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + +}; + +// mostReadable +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Optionally returns Black or White if the most readable color is unreadable. +// *Example* +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" +tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } +}; + +// Big List of Colors +// ------------------ +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via hexNames[hex] +var hexNames = tinycolor.hexNames = flip(names); + +// Utilities +// --------- + +// { 'name1': 'val1' } becomes { 'val1': 'name1' } +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Return a valid alpha value [0,1] with all invalid values being set to 1 +function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse a base-16 hex value into a base-10 integer +function parseIntFromHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +// Converts a decimal to a hex value +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +// Converts a hex value to a decimal +function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// isValidCSSUnit +// Take in a single string / number and check to see if it looks like a CSS unit +// (see matchers above for definition). +function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); +} + +// stringInputToObject +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns { r, g, b } or { h, s, l } or { h, s, v} +function stringInputToObject(color) { + + color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; +} + +this.tinycolor = tinycolor; + +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.tinyColorMixin(); + +// We create a very complex algorithm which take the place of original tint/shade color system +// to make sure no one can understand it 👻 +// and create an entire color palette magicly by inputing just a single primary color. +// We are using bezier-curve easing function and some color manipulations like tint/shade/darken/spin +.colorPaletteMixin() { + @functions: ~`(function() { + var hueStep = 2; + var saturationStep = 16; + var saturationStep2 = 5; + var brightnessStep1 = 5; + var brightnessStep2 = 15; + var lightColorCount = 5; + var darkColorCount = 4; + + var getHue = function(hsv, i, isLight) { + var hue; + if (hsv.h >= 60 && hsv.h <= 240) { + hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i; + } else { + hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i; + } + if (hue < 0) { + hue += 360; + } else if (hue >= 360) { + hue -= 360; + } + return Math.round(hue); + }; + var getSaturation = function(hsv, i, isLight) { + var saturation; + if (isLight) { + saturation = Math.round(hsv.s * 100) - saturationStep * i; + } else if (i == darkColorCount) { + saturation = Math.round(hsv.s * 100) + saturationStep; + } else { + saturation = Math.round(hsv.s * 100) + saturationStep2 * i; + } + if (saturation > 100) { + saturation = 100; + } + if (isLight && i === lightColorCount && saturation > 10) { + saturation = 10; + } + if (saturation < 6) { + saturation = 6; + } + return Math.round(saturation); + }; + var getValue = function(hsv, i, isLight) { + if (isLight) { + return Math.round(hsv.v * 100) + brightnessStep1 * i; + } + return Math.round(hsv.v * 100) - brightnessStep2 * i; + }; + + this.colorPalette = function(color, index) { + var isLight = index <= 6; + var hsv = tinycolor(color).toHsv(); + var i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1; + return tinycolor({ + h: getHue(hsv, i, isLight), + s: getSaturation(hsv, i, isLight), + v: getValue(hsv, i, isLight), + }).toHexString(); + }; +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.colorPaletteMixin(); + +// color palettes +@blue-1: color(~`colorPalette("@{blue-6}", 1)`); +@blue-2: color(~`colorPalette("@{blue-6}", 2)`); +@blue-3: color(~`colorPalette("@{blue-6}", 3)`); +@blue-4: color(~`colorPalette("@{blue-6}", 4)`); +@blue-5: color(~`colorPalette("@{blue-6}", 5)`); +@blue-6: #1890ff; +@blue-7: color(~`colorPalette("@{blue-6}", 7)`); +@blue-8: color(~`colorPalette("@{blue-6}", 8)`); +@blue-9: color(~`colorPalette("@{blue-6}", 9)`); +@blue-10: color(~`colorPalette("@{blue-6}", 10)`); + +@purple-1: color(~`colorPalette("@{purple-6}", 1)`); +@purple-2: color(~`colorPalette("@{purple-6}", 2)`); +@purple-3: color(~`colorPalette("@{purple-6}", 3)`); +@purple-4: color(~`colorPalette("@{purple-6}", 4)`); +@purple-5: color(~`colorPalette("@{purple-6}", 5)`); +@purple-6: #722ed1; +@purple-7: color(~`colorPalette("@{purple-6}", 7)`); +@purple-8: color(~`colorPalette("@{purple-6}", 8)`); +@purple-9: color(~`colorPalette("@{purple-6}", 9)`); +@purple-10: color(~`colorPalette("@{purple-6}", 10)`); + +@cyan-1: color(~`colorPalette("@{cyan-6}", 1)`); +@cyan-2: color(~`colorPalette("@{cyan-6}", 2)`); +@cyan-3: color(~`colorPalette("@{cyan-6}", 3)`); +@cyan-4: color(~`colorPalette("@{cyan-6}", 4)`); +@cyan-5: color(~`colorPalette("@{cyan-6}", 5)`); +@cyan-6: #13c2c2; +@cyan-7: color(~`colorPalette("@{cyan-6}", 7)`); +@cyan-8: color(~`colorPalette("@{cyan-6}", 8)`); +@cyan-9: color(~`colorPalette("@{cyan-6}", 9)`); +@cyan-10: color(~`colorPalette("@{cyan-6}", 10)`); + +@green-1: color(~`colorPalette("@{green-6}", 1)`); +@green-2: color(~`colorPalette("@{green-6}", 2)`); +@green-3: color(~`colorPalette("@{green-6}", 3)`); +@green-4: color(~`colorPalette("@{green-6}", 4)`); +@green-5: color(~`colorPalette("@{green-6}", 5)`); +@green-6: #52c41a; +@green-7: color(~`colorPalette("@{green-6}", 7)`); +@green-8: color(~`colorPalette("@{green-6}", 8)`); +@green-9: color(~`colorPalette("@{green-6}", 9)`); +@green-10: color(~`colorPalette("@{green-6}", 10)`); + +@magenta-1: color(~`colorPalette("@{magenta-6}", 1)`); +@magenta-2: color(~`colorPalette("@{magenta-6}", 2)`); +@magenta-3: color(~`colorPalette("@{magenta-6}", 3)`); +@magenta-4: color(~`colorPalette("@{magenta-6}", 4)`); +@magenta-5: color(~`colorPalette("@{magenta-6}", 5)`); +@magenta-6: #eb2f96; +@magenta-7: color(~`colorPalette("@{magenta-6}", 7)`); +@magenta-8: color(~`colorPalette("@{magenta-6}", 8)`); +@magenta-9: color(~`colorPalette("@{magenta-6}", 9)`); +@magenta-10: color(~`colorPalette("@{magenta-6}", 10)`); + +// alias of magenta +@pink-1: color(~`colorPalette("@{pink-6}", 1)`); +@pink-2: color(~`colorPalette("@{pink-6}", 2)`); +@pink-3: color(~`colorPalette("@{pink-6}", 3)`); +@pink-4: color(~`colorPalette("@{pink-6}", 4)`); +@pink-5: color(~`colorPalette("@{pink-6}", 5)`); +@pink-6: #eb2f96; +@pink-7: color(~`colorPalette("@{pink-6}", 7)`); +@pink-8: color(~`colorPalette("@{pink-6}", 8)`); +@pink-9: color(~`colorPalette("@{pink-6}", 9)`); +@pink-10: color(~`colorPalette("@{pink-6}", 10)`); + +@red-1: color(~`colorPalette("@{red-6}", 1)`); +@red-2: color(~`colorPalette("@{red-6}", 2)`); +@red-3: color(~`colorPalette("@{red-6}", 3)`); +@red-4: color(~`colorPalette("@{red-6}", 4)`); +@red-5: color(~`colorPalette("@{red-6}", 5)`); +@red-6: #f5222d; +@red-7: color(~`colorPalette("@{red-6}", 7)`); +@red-8: color(~`colorPalette("@{red-6}", 8)`); +@red-9: color(~`colorPalette("@{red-6}", 9)`); +@red-10: color(~`colorPalette("@{red-6}", 10)`); + +@orange-1: color(~`colorPalette("@{orange-6}", 1)`); +@orange-2: color(~`colorPalette("@{orange-6}", 2)`); +@orange-3: color(~`colorPalette("@{orange-6}", 3)`); +@orange-4: color(~`colorPalette("@{orange-6}", 4)`); +@orange-5: color(~`colorPalette("@{orange-6}", 5)`); +@orange-6: #fa8c16; +@orange-7: color(~`colorPalette("@{orange-6}", 7)`); +@orange-8: color(~`colorPalette("@{orange-6}", 8)`); +@orange-9: color(~`colorPalette("@{orange-6}", 9)`); +@orange-10: color(~`colorPalette("@{orange-6}", 10)`); + +@yellow-1: color(~`colorPalette("@{yellow-6}", 1)`); +@yellow-2: color(~`colorPalette("@{yellow-6}", 2)`); +@yellow-3: color(~`colorPalette("@{yellow-6}", 3)`); +@yellow-4: color(~`colorPalette("@{yellow-6}", 4)`); +@yellow-5: color(~`colorPalette("@{yellow-6}", 5)`); +@yellow-6: #fadb14; +@yellow-7: color(~`colorPalette("@{yellow-6}", 7)`); +@yellow-8: color(~`colorPalette("@{yellow-6}", 8)`); +@yellow-9: color(~`colorPalette("@{yellow-6}", 9)`); +@yellow-10: color(~`colorPalette("@{yellow-6}", 10)`); + +@volcano-1: color(~`colorPalette("@{volcano-6}", 1)`); +@volcano-2: color(~`colorPalette("@{volcano-6}", 2)`); +@volcano-3: color(~`colorPalette("@{volcano-6}", 3)`); +@volcano-4: color(~`colorPalette("@{volcano-6}", 4)`); +@volcano-5: color(~`colorPalette("@{volcano-6}", 5)`); +@volcano-6: #fa541c; +@volcano-7: color(~`colorPalette("@{volcano-6}", 7)`); +@volcano-8: color(~`colorPalette("@{volcano-6}", 8)`); +@volcano-9: color(~`colorPalette("@{volcano-6}", 9)`); +@volcano-10: color(~`colorPalette("@{volcano-6}", 10)`); + +@geekblue-1: color(~`colorPalette("@{geekblue-6}", 1)`); +@geekblue-2: color(~`colorPalette("@{geekblue-6}", 2)`); +@geekblue-3: color(~`colorPalette("@{geekblue-6}", 3)`); +@geekblue-4: color(~`colorPalette("@{geekblue-6}", 4)`); +@geekblue-5: color(~`colorPalette("@{geekblue-6}", 5)`); +@geekblue-6: #2f54eb; +@geekblue-7: color(~`colorPalette("@{geekblue-6}", 7)`); +@geekblue-8: color(~`colorPalette("@{geekblue-6}", 8)`); +@geekblue-9: color(~`colorPalette("@{geekblue-6}", 9)`); +@geekblue-10: color(~`colorPalette("@{geekblue-6}", 10)`); + +@lime-1: color(~`colorPalette("@{lime-6}", 1)`); +@lime-2: color(~`colorPalette("@{lime-6}", 2)`); +@lime-3: color(~`colorPalette("@{lime-6}", 3)`); +@lime-4: color(~`colorPalette("@{lime-6}", 4)`); +@lime-5: color(~`colorPalette("@{lime-6}", 5)`); +@lime-6: #a0d911; +@lime-7: color(~`colorPalette("@{lime-6}", 7)`); +@lime-8: color(~`colorPalette("@{lime-6}", 8)`); +@lime-9: color(~`colorPalette("@{lime-6}", 9)`); +@lime-10: color(~`colorPalette("@{lime-6}", 10)`); + +@gold-1: color(~`colorPalette("@{gold-6}", 1)`); +@gold-2: color(~`colorPalette("@{gold-6}", 2)`); +@gold-3: color(~`colorPalette("@{gold-6}", 3)`); +@gold-4: color(~`colorPalette("@{gold-6}", 4)`); +@gold-5: color(~`colorPalette("@{gold-6}", 5)`); +@gold-6: #faad14; +@gold-7: color(~`colorPalette("@{gold-6}", 7)`); +@gold-8: color(~`colorPalette("@{gold-6}", 8)`); +@gold-9: color(~`colorPalette("@{gold-6}", 9)`); +@gold-10: color(~`colorPalette("@{gold-6}", 10)`); + +// The prefix to use on all css classes from ant. +@ant-prefix : ant; + +// -------- Colors ----------- + +@info-color : @blue-6; +@success-color : @green-6; +@processing-color : @blue-6; +@error-color : @red-6; +@highlight-color : @red-6; +@warning-color : @gold-6; +@normal-color : #d9d9d9; + +// Color used by default to control hover and active backgrounds and for +// alert info backgrounds. +@primary-1: color(~`colorPalette("@{primary-color}", 1)`); // replace tint(@primary-color, 90%) +@primary-2: color(~`colorPalette("@{primary-color}", 2)`); // replace tint(@primary-color, 80%) +@primary-3: color(~`colorPalette("@{primary-color}", 3)`); // unused +@primary-4: color(~`colorPalette("@{primary-color}", 4)`); // unused +@primary-5: color(~`colorPalette("@{primary-color}", 5)`); // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%) +@primary-6: @primary-color; // color used to control the text color of active buttons, don't use, use @primary-color +@primary-7: color(~`colorPalette("@{primary-color}", 7)`); // replace shade(@primary-color, 5%) +@primary-8: color(~`colorPalette("@{primary-color}", 8)`); // unused +@primary-9: color(~`colorPalette("@{primary-color}", 9)`); // unused +@primary-10: color(~`colorPalette("@{primary-color}", 10)`); // unused + +// Base Scaffolding Variables +// --- + +// Background color for `` +@body-background : #fff; +// Base background color for most components +@component-background : #fff; +@font-family : "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, +"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +@code-family : "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; +@heading-color : fade(#000, 85%); +@text-color : fade(#000, 65%); +@text-color-secondary : fade(#000, 45%); +@heading-color-dark : fade(#fff, 100%); +@text-color-dark : fade(#fff, 85%); +@text-color-secondary-dark: fade(#fff, 65%); +@font-size-base : 14px; +@font-size-lg : @font-size-base + 2px; +@font-size-sm : 12px; +@line-height-base : 1.5; +@border-radius-base : 4px; +@border-radius-sm : 2px; + +// vertical paddings +@padding-lg : 24px; // containers +@padding-md : 16px; // small containers and buttons +@padding-sm : 12px; // Form controls and items +@padding-xs : 8px; // small items + +// vertical padding for all form controls +@control-padding-horizontal: @padding-sm; +@control-padding-horizontal-sm: @padding-xs; + +// The background colors for active and hover states for things like +// list items or table cells. +@item-active-bg : @primary-1; +@item-hover-bg : @primary-1; + +// ICONFONT +@iconfont-css-prefix : anticon; + +// LINK +@link-color : @primary-color; +@link-hover-color : color(~`colorPalette("@{link-color}", 5)`); +@link-active-color : color(~`colorPalette("@{link-color}", 7)`); +@link-decoration : none; +@link-hover-decoration : none; + +// Animation +@ease-base-out : cubic-bezier(0.7, 0.3, 0.1, 1); +@ease-base-in : cubic-bezier(0.9, 0, 0.3, 0.7); +@ease-out : cubic-bezier(0.215, 0.61, 0.355, 1); +@ease-in : cubic-bezier(0.55, 0.055, 0.675, 0.19); +@ease-in-out : cubic-bezier(0.645, 0.045, 0.355, 1); +@ease-out-back : cubic-bezier(0.12, 0.4, 0.29, 1.46); +@ease-in-back : cubic-bezier(0.71, -0.46, 0.88, 0.6); +@ease-in-out-back : cubic-bezier(0.71, -0.46, 0.29, 1.46); +@ease-out-circ : cubic-bezier(0.08, 0.82, 0.17, 1); +@ease-in-circ : cubic-bezier(0.6, 0.04, 0.98, 0.34); +@ease-in-out-circ : cubic-bezier(0.78, 0.14, 0.15, 0.86); +@ease-out-quint : cubic-bezier(0.23, 1, 0.32, 1); +@ease-in-quint : cubic-bezier(0.755, 0.05, 0.855, 0.06); +@ease-in-out-quint : cubic-bezier(0.86, 0, 0.07, 1); + +// Border color +@border-color-base : hsv(0, 0, 85%); // base border outline a component +@border-color-split : hsv(0, 0, 91%); // split border inside a component +@border-width-base : 1px; // width of the border for a component +@border-style-base : solid; // style of a components border + +// Outline +@outline-blur-size : 0; +@outline-width : 2px; +@outline-color : @primary-color; + +@background-color-light : hsv(0, 0, 98%); // background of header and selected item +@background-color-base : hsv(0, 0, 96%); // Default grey background color + +// Disabled states +@disabled-color : fade(#000, 25%); +@disabled-bg : @background-color-base; +@disabled-color-dark : fade(#fff, 35%); + +// Shadow +@shadow-color : rgba(0, 0, 0, .15); +@box-shadow-base : @shadow-1-down; +@shadow-1-up : 0 -2px 8px @shadow-color; +@shadow-1-down : 0 2px 8px @shadow-color; +@shadow-1-left : -2px 0 8px @shadow-color; +@shadow-1-right : 2px 0 8px @shadow-color; +@shadow-2 : 0 4px 12px @shadow-color; + +// Buttons +@btn-font-weight : 400; +@btn-border-radius-base : @border-radius-base; +@btn-border-radius-sm : @border-radius-base; + +@btn-primary-color : #fff; +@btn-primary-bg : @primary-color; + +@btn-default-color : @text-color; +@btn-default-bg : #fff; +@btn-default-border : @border-color-base; + +@btn-danger-color : @error-color; +@btn-danger-bg : @background-color-base; +@btn-danger-border : @border-color-base; + +@btn-disable-color : @disabled-color; +@btn-disable-bg : @disabled-bg; +@btn-disable-border : @border-color-base; + +@btn-padding-base : 0 @padding-md - 1px; +@btn-font-size-lg : @font-size-lg; +@btn-font-size-sm : @font-size-base; +@btn-padding-lg : @btn-padding-base; +@btn-padding-sm : 0 @padding-xs - 1px; + +@btn-height-base : 32px; +@btn-height-lg : 40px; +@btn-height-sm : 24px; + +@btn-circle-size : @btn-height-base; +@btn-circle-size-lg : @btn-height-lg; +@btn-circle-size-sm : @btn-height-sm; + +@btn-group-border : @primary-5; + +// Checkbox +@checkbox-size : 16px; +@checkbox-color : @primary-color; +@checkbox-check-color : #fff; + +// Radio +@radio-size : 16px; +@radio-dot-color : @primary-color; + +// Radio buttons +@radio-button-bg : @btn-default-bg; +@radio-button-color : @btn-default-color; +@radio-button-hover-color : @primary-5; +@radio-button-active-color : @primary-7; + +// Media queries breakpoints +// Extra small screen / phone +@screen-xs : 480px; +@screen-xs-min : @screen-xs; + +// Small screen / tablet +@screen-sm : 576px; +@screen-sm-min : @screen-sm; + +// Medium screen / desktop +@screen-md : 768px; +@screen-md-min : @screen-md; + +// Large screen / wide desktop +@screen-lg : 992px; +@screen-lg-min : @screen-lg; + +// Extra large screen / full hd +@screen-xl : 1200px; +@screen-xl-min : @screen-xl; + +// Extra extra large screen / large descktop +@screen-xxl : 1600px; +@screen-xxl-min : @screen-xxl; + +// provide a maximum +@screen-xs-max : (@screen-sm-min - 1px); +@screen-sm-max : (@screen-md-min - 1px); +@screen-md-max : (@screen-lg-min - 1px); +@screen-lg-max : (@screen-xl-min - 1px); +@screen-xl-max : (@screen-xxl-min - 1px); + +// Grid system +@grid-columns : 24; +@grid-gutter-width : 0; + +// Layout +@layout-body-background : #f0f2f5; +@layout-header-background : #001529; +@layout-footer-background : @layout-body-background; +@layout-header-height : 64px; +@layout-header-padding : 0 50px; +@layout-footer-padding : 24px 50px; +@layout-sider-background : @layout-header-background; +@layout-trigger-height : 48px; +@layout-trigger-background : #002140; +@layout-trigger-color : #fff; +@layout-zero-trigger-width : 36px; +@layout-zero-trigger-height : 42px; +// Layout light theme +@layout-sider-background-light : #fff; +@layout-trigger-background-light: #fff; +@layout-trigger-color-light : @text-color; + +// z-index list +@zindex-affix : 10; +@zindex-back-top : 10; +@zindex-modal-mask : 1000; +@zindex-modal : 1000; +@zindex-notification : 1010; +@zindex-message : 1010; +@zindex-popover : 1030; +@zindex-picker : 1050; +@zindex-dropdown : 1050; +@zindex-tooltip : 1060; + +// Animation +@animation-duration-slow: .3s; // Modal +@animation-duration-base: .2s; +@animation-duration-fast: .1s; // Tooltip + +// Form +// --- +@label-required-color : @highlight-color; +@label-color : @heading-color; +@form-item-margin-bottom : 24px; +@form-item-trailing-colon : true; +@form-vertical-label-padding : 0 0 8px; +@form-vertical-label-margin : 0; + +// Input +// --- +@input-height-base : 32px; +@input-height-lg : 40px; +@input-height-sm : 24px; +@input-padding-horizontal : @control-padding-horizontal - 1px; +@input-padding-horizontal-base: @input-padding-horizontal; +@input-padding-horizontal-sm : @control-padding-horizontal-sm - 1px; +@input-padding-horizontal-lg : @input-padding-horizontal; +@input-padding-vertical-base : 4px; +@input-padding-vertical-sm : 1px; +@input-padding-vertical-lg : 6px; +@input-placeholder-color : hsv(0, 0, 75%); +@input-color : @text-color; +@input-border-color : @border-color-base; +@input-bg : #fff; +@input-addon-bg : @background-color-light; +@input-hover-border-color : @primary-color; +@input-disabled-bg : @disabled-bg; +@input-outline-offset : 0 0; + +// Tooltip +// --- +//* Tooltip max width +@tooltip-max-width: 250px; +//** Tooltip text color +@tooltip-color: #fff; +//** Tooltip background color +@tooltip-bg: rgba(0, 0, 0, .75); +//** Tooltip arrow width +@tooltip-arrow-width: 5px; +//** Tooltip distance with trigger +@tooltip-distance: @tooltip-arrow-width - 1px + 4px; +//** Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; + +// Popover +// --- +//** Popover body background color +@popover-bg: #fff; +//** Popover text color +@popover-color: @text-color; +//** Popover maximum width +@popover-min-width: 177px; +//** Popover arrow width +@popover-arrow-width: 6px; +//** Popover arrow color +@popover-arrow-color: @popover-bg; +//** Popover outer arrow width +//** Popover outer arrow color +@popover-arrow-outer-color: @popover-bg; +//** Popover distance with trigger +@popover-distance: @popover-arrow-width + 4px; + +// Modal +// -- +@modal-mask-bg: rgba(0, 0, 0, 0.65); + +// Progress +// -- +@progress-default-color: @processing-color; +@progress-remaining-color: @background-color-base; +@progress-text-color: @text-color; + +// Menu +// --- +@menu-inline-toplevel-item-height: 40px; +@menu-item-height: 40px; +@menu-collapsed-width: 80px; +@menu-bg: @component-background; +@menu-item-color: @text-color; +@menu-highlight-color: @primary-color; +@menu-item-active-bg: @item-active-bg; +@menu-item-active-border-width: 3px; +@menu-item-group-title-color: @text-color-secondary; +// dark theme +@menu-dark-color: @text-color-secondary-dark; +@menu-dark-bg: @layout-header-background; +@menu-dark-arrow-color: #fff; +@menu-dark-submenu-bg: #000c17; +@menu-dark-highlight-color: #fff; +@menu-dark-item-active-bg: @primary-color; + +// Spin +// --- +@spin-dot-size-sm: 14px; +@spin-dot-size: 20px; +@spin-dot-size-lg: 32px; + +// Table +// -- +@table-header-bg: @background-color-light; +@table-header-color: @heading-color; +@table-header-sort-bg: @background-color-base; +@table-body-sort-bg: rgba(0, 0, 0, .01); +@table-row-hover-bg: @primary-1; +@table-selected-row-bg: #fafafa; +@table-expanded-row-bg: #fbfbfb; +@table-padding-vertical: 16px; +@table-padding-horizontal: 16px; + +// Tag +// -- +@tag-default-bg: @background-color-light; +@tag-default-color: @text-color; +@tag-font-size: @font-size-sm; + +// TimePicker +// --- +@time-picker-panel-column-width: 56px; +@time-picker-panel-width: @time-picker-panel-column-width * 3; +@time-picker-selected-bg: @background-color-base; + +// Carousel +// --- +@carousel-dot-width: 16px; +@carousel-dot-height: 3px; +@carousel-dot-active-width: 24px; + +// Badge +// --- +@badge-height: 20px; +@badge-dot-size: 6px; +@badge-font-size: @font-size-sm; +@badge-font-weight: normal; +@badge-status-size: 6px; + +// Rate +// --- +@rate-star-color: @yellow-6; +@rate-star-bg: @border-color-split; + +// Card +// --- +@card-head-color: @heading-color; +@card-head-background: transparent; +@card-head-padding: 16px; +@card-inner-head-padding: 12px; +@card-padding-base: 24px; +@card-padding-wider: 32px; +@card-actions-background: @background-color-light; +@card-shadow: 0 2px 8px rgba(0, 0, 0, .09); + +// Tabs +// --- +@tabs-card-head-background: @background-color-light; +@tabs-card-height: 40px; +@tabs-card-active-color: @primary-color; +@tabs-title-font-size: @font-size-base; +@tabs-title-font-size-lg: @font-size-lg; +@tabs-title-font-size-sm: @font-size-base; +@tabs-ink-bar-color: @primary-color; +@tabs-bar-margin: 0 0 16px 0; +@tabs-horizontal-margin: 0 32px 0 0; +@tabs-horizontal-padding: 12px 16px; +@tabs-vertical-padding: 8px 24px; +@tabs-vertical-margin: 0 0 16px 0; +@tabs-scrolling-size: 32px; +@tabs-highlight-color: @primary-color; +@tabs-hover-color: @primary-5; +@tabs-active-color: @primary-7; + +// BackTop +// --- +@back-top-color: #fff; +@back-top-bg: @text-color-secondary; +@back-top-hover-bg: @text-color; + +// Avatar +// --- +@avatar-size-base: 32px; +@avatar-size-lg: 40px; +@avatar-size-sm: 24px; +@avatar-font-size-base: 18px; +@avatar-font-size-lg: 24px; +@avatar-font-size-sm: 14px; +@avatar-bg: #ccc; +@avatar-color: #fff; +@avatar-border-radius: @border-radius-base; + +// Switch +// --- +@switch-height: 22px; +@switch-sm-height: 16px; +@switch-sm-checked-margin-left: -(@switch-sm-height - 3px); +@switch-disabled-opacity: 0.4; +@switch-color: @primary-color; + +// Pagination +// --- +@pagination-item-size: 32px; +@pagination-item-size-sm: 24px; +@pagination-font-family: Arial; +@pagination-font-weight-active: 500; + +// Breadcrumb +// --- +@breadcrumb-base-color: @text-color-secondary; +@breadcrumb-last-item-color: @text-color; +@breadcrumb-font-size: @font-size-base; +@breadcrumb-icon-font-size: @font-size-base; +@breadcrumb-link-color: @text-color-secondary; +@breadcrumb-link-color-hover: @primary-5; +@breadcrumb-separator-color: @text-color-secondary; +@breadcrumb-separator-margin: 0 @padding-xs; + +// Slider +// --- +@slider-margin: 14px 6px 10px; +@slider-rail-background-color: @background-color-base; +@slider-rail-background-color-hover: #e1e1e1; +@slider-track-background-color: @primary-3; +@slider-track-background-color-hover: @primary-4; +@slider-handle-color: @primary-3; +@slider-handle-color-hover: @primary-4; +@slider-handle-color-focus: tint(@primary-color, 20%); +@slider-handle-color-focus-shadow: tint(@primary-color, 50%); +@slider-handle-color-tooltip-open: @primary-color; +@slider-dot-border-color: @border-color-split; +@slider-dot-border-color-active: tint(@primary-color, 50%); +@slider-disabled-color: @disabled-color; +@slider-disabled-background-color: @component-background; + +// Tree +// --- +@tree-title-height: 24px; +@tree-child-padding: 18px; +@tree-directory-selected-color: #fff; +@tree-directory-selected-bg: @primary-color; + +// Collapse +// --- +@collapse-header-padding: 12px 0 12px 40px; +@collapse-header-bg: @background-color-light; +@collapse-content-padding: @padding-md; +@collapse-content-bg: @component-background; + +// Skeleton +// --- +@skeleton-color: #f2f2f2; + +// Transfer +// --- +@transfer-disabled-bg: @disabled-bg; + +// Message +// --- +@message-notice-content-padding: 10px 16px; + +// Motion +// --- +@wave-animation-width: 6px; + +// Alert +// --- +@alert-success-border-color: ~`colorPalette("@{success-color}", 3)`; +@alert-success-bg-color: ~`colorPalette("@{success-color}", 1)`; +@alert-success-icon-color: @success-color; +@alert-info-border-color: ~`colorPalette("@{info-color}", 3)`; +@alert-info-bg-color: ~`colorPalette("@{info-color}", 1)`; +@alert-info-icon-color: @info-color; +@alert-warning-border-color: ~`colorPalette("@{warning-color}", 3)`; +@alert-warning-bg-color: ~`colorPalette("@{warning-color}", 1)`; +@alert-warning-icon-color: @warning-color; +@alert-error-border-color: ~`colorPalette("@{error-color}", 3)`; +@alert-error-bg-color: ~`colorPalette("@{error-color}", 1)`; +@alert-error-icon-color: @error-color; + +// List +// --- +@list-empty-text-padding: @padding-md; +@list-item-padding: @padding-sm 0; +@list-item-content-margin: 0 0 @padding-md 0; +@list-item-meta-margin-bottom: @padding-md; +@list-item-meta-avatar-margin-right: @padding-md; +@list-item-meta-title-margin-bottom: @padding-sm; + +// Menu +@menu-dark-item-selected-bg: @menu-dark-item-active-bg; + +// Tabs +@tab-bar-margin: @tabs-bar-margin; +@tab-horizontal-margin: @tabs-horizontal-margin; +@tab-vertical-margin: @tabs-vertical-margin; +@tab-horizontal-padding: @tabs-horizontal-padding; +@tab-vertical-padding: @tabs-vertical-padding; +@tab-scrolling-size: @tabs-scrolling-size; +@tab-highlight-color: @tabs-highlight-color; +@tab-hover-color: @tabs-hover-color; +@tab-active-color: @tabs-active-color; +@tabs-ink-bar-bg-color: @tabs-ink-bar-color; + +.listContent .extra { + color: rgba(0, 0, 0, 0.45); +} +.listContent .extra > em { + color: rgba(0, 0, 0, 0.25); +} +.avatarItem :global .ant-avatar { + border: 1px solid #fff; +} +.chartCard .avatar img { + border-radius: 100%; +} +.chartCard .meta { + color: rgba(0, 0, 0, 0.45); +} +.chartCard .total { + color: rgba(0, 0, 0, 0.85); +} +.chartCard .footer { + border-top: 1px solid #e8e8e8; +} +.field span:last-child { + color: rgba(0, 0, 0, 0.85); +} +.miniProgress .progressWrap { + background-color: #f5f5f5; +} +.miniProgress .progress { + border-radius: 1px 0 0 1px; + background-color: @primary-color; +} +.miniProgress .target span { + border-radius: 100px; +} +.pie .dot { + border-radius: 8px; +} +.pie .line { + background-color: #e8e8e8; +} +.pie .legendTitle { + color: rgba(0, 0, 0, 0.65); +} +.pie .percent { + color: rgba(0, 0, 0, 0.45); +} +.pie .total > h4 { + color: rgba(0, 0, 0, 0.45); +} +.pie .total > p { + color: rgba(0, 0, 0, 0.85); +} +.radar .legend .legendItem { + color: rgba(0, 0, 0, 0.45); +} +.radar .legend .legendItem h6 { + color: rgba(0, 0, 0, 0.85); +} +.radar .legend .legendItem:after { + background-color: #e8e8e8; +} +.radar .legend .dot { + border-radius: 6px; +} + +.timelineChart { + background: #fff; +} +.waterWave .text span { + color: rgba(0, 0, 0, 0.45); +} +.waterWave .text h4 { + color: rgba(0, 0, 0, 0.85); +} +.descriptionList .title { + color: rgba(0, 0, 0, 0.85); +} +.descriptionList .term { + color: rgba(0, 0, 0, 0.85); +} +.descriptionList .detail { + color: rgba(0, 0, 0, 0.65); +} +.descriptionList.small .title { + color: rgba(0, 0, 0, 0.65); +} +.linkGroup > a { + color: rgba(0, 0, 0, 0.65); +} +.linkGroup > a:hover { + color: @primary-color; +} +.lines .shadow { + color: transparent; +} +.exception .imgEle { + background-repeat: no-repeat; + background-position: 50% 50%; + background-size: contain; +} +.exception .content h1 { + color: #434e59; +} +.exception .content .desc { + color: rgba(0, 0, 0, 0.45); +} +.toolbar { + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.03); + background: #fff; + border-top: 1px solid #e8e8e8; +} +.globalFooter .links a { + color: rgba(0, 0, 0, 0.45); +} +.globalFooter .links a:hover { + color: rgba(0, 0, 0, 0.65); +} +.globalFooter .copyright { + color: rgba(0, 0, 0, 0.45); +} +.layout .header { + background-color: @primary-color !important; +} +i.trigger:hover { + background: rgba(0, 0, 0, 0.025); +} +.right .action > i { + color: rgba(0, 0, 0, 0.65); +} +.right .action:hover { + background: rgba(0, 0, 0, 0.025); +} +:global(.right .action.ant-popover-open) { + background: rgba(0, 0, 0, 0.025); +} +.right .search:hover { + background: transparent; +} +.right .account .avatar { + color: @primary-color; + background: rgba(255, 255, 255, 0.85); +} +.dark .action { + color: rgba(255, 255, 255, 0.85); +} +.dark .action > i { + color: rgba(255, 255, 255, 0.85); +} +.dark .action:hover, +.dark .action:global(.ant-popover-open) { + background: @primary-color; +} +.dark .action :global(.ant-badge) { + color: rgba(255, 255, 255, 0.85); +} +.headerSearch .input { + background: transparent; + border-radius: 0; +} +.headerSearch .input :global(.ant-select-selection) { + background: transparent; +} +.headerSearch .input input { + border: 0; + box-shadow: none !important; +} +.headerSearch .input, +.headerSearch .input:hover, +.headerSearch .input:focus { + border-bottom: 1px solid #d9d9d9; +} +.login :global .ant-tabs .ant-tabs-bar { + border-bottom: 0; +} +.login .icon { + color: rgba(0, 0, 0, 0.2); +} +.login .icon:hover { + color: @primary-color; +} +.login .prefixIcon { + color: rgba(0, 0, 0, 0.25); +} +.list .item .avatar { + background: #fff; +} +.list .item:last-child { + border-bottom: 0; +} +.list .item:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.list .item .extra { + color: rgba(0, 0, 0, 0.45); +} +.notFound { + color: rgba(0, 0, 0, 0.45); +} +.clear { + color: rgba(0, 0, 0, 0.65); + border-radius: 0 0 4px 4px; + border-top: 1px solid #e8e8e8; +} +.clear:hover { + color: rgba(0, 0, 0, 0.85); +} +.numberInfo .suffix { + color: rgba(0, 0, 0, 0.65); +} +.numberInfo .numberInfoTitle { + color: rgba(0, 0, 0, 0.65); +} +.numberInfo .numberInfoSubTitle { + color: rgba(0, 0, 0, 0.45); +} +.numberInfo .numberInfoValue > span { + color: rgba(0, 0, 0, 0.85); +} +.numberInfo .numberInfoValue .subTotal { + color: rgba(0, 0, 0, 0.45); +} +.numberInfo .numberInfoValue .subTotal :global .anticon-caret-up { + color: #f5222d; +} +.numberInfo .numberInfoValue .subTotal :global .anticon-caret-down { + color: #52c41a; +} +.numberInfolight .numberInfoValue > span { + color: rgba(0, 0, 0, 0.65); +} +.pageHeader { + background: #fff; + border-bottom: 1px solid #e8e8e8; +} +.pageHeader .tabs :global .ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; +} +.pageHeader .logo > img { + border-radius: 4px; +} +.pageHeader .title { + color: rgba(0, 0, 0, 0.85); +} +.result .icon > .success { + color: #52c41a; +} +.result .icon > .error { + color: #f5222d; +} +.result .title { + color: rgba(0, 0, 0, 0.85); +} +.result .description { + color: rgba(0, 0, 0, 0.45); +} +.result .extra { + background: #fafafa; + border-radius: 2px; +} +.blockChecbox .item { + border-radius: 4px; +} +.blockChecbox .selectIcon { + color: @primary-color; +} +.color_block { + border-radius: 4px; +} +.title { + color: rgba(0, 0, 0, 0.85); +} +.handle { + background: @primary-color; + border-radius: 4px 0 0 4px; +} +.setting-drawer-index-handle { + /* 暂时不知道放哪解决 */ + background: @primary-color !important; +} +.themeColor .title { + color: rgba(0, 0, 0, 0.65); +} +.themeColor .colorBlock { + border-radius: 2px; + color: #fff; +} +.logo h1 { + color: white; +} +.sider { + box-shadow: 2px 116px 6px rgba(0, 21, 41, 0.35); +} +.sider.light { + box-shadow: 2px 116px 8px 0 rgba(29, 35, 41, 0.05); + background-color: white; +} +.sider.light .logo { + background-color: @primary-color !important; + box-shadow: 1px 1px 0 0 #e8e8e8; +} +.sider.light .logo h1 { + color: white; +} +.sider.light :global(.ant-menu-light) { + border-right-color: transparent; +} +:global .drawer .drawer-content { + background: #001529; +} +.standardFormRow { + border-bottom: 1px dashed #e8e8e8; +} +.standardFormRow :global .ant-form-item-label label { + color: rgba(0, 0, 0, 0.65); +} +.standardFormRow .label { + color: rgba(0, 0, 0, 0.85); +} +.standardFormRowLast { + border: none; +} + +.head { + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); +} +.head.light { + background-color: #fff; +} +.logo h1 { + color: #fff; +} +.light h1 { + color: #002140; +} +.trendItem .up { + color: #f5222d; +} +.trendItem .down { + color: #52c41a; +} +.trendItem.trendItemGrey .up, +.trendItem.trendItemGrey .down { + color: rgba(0, 0, 0, 0.65); +} +.trendItem.reverseColor .up { + color: #52c41a; +} +.trendItem.reverseColor .down { + color: #f5222d; +} +.container { + background: #f0f2f5; +} +.title { + color: rgba(0, 0, 0, 0.85); +} +.desc { + color: rgba(0, 0, 0, 0.45); +} +a.listItemMetaTitle { + color: rgba(0, 0, 0, 0.85); +} +.baseView .right .avatar_title { + color: rgba(0, 0, 0, 0.85); +} +.main { + //update-begin---author:liusq Date:20210108 for:[JT-409]编译主题色,然后退出登录后的首页是这样子------------ + //background-color: #fff; + //update-end---author:liusq Date:20210108 for:[JT-409]编译主题色,然后退出登录后的首页是这样子------------ +} +.main .leftmenu { + border-right: 1px solid #e8e8e8; +} +.main .leftmenu :global .ant-menu-inline { + border: none; +} +.main .right .title { + color: rgba(0, 0, 0, 0.85); +} +.main :global .ant-list-split .ant-list-item:last-child { + border-bottom: 1px solid #e8e8e8; +} +:global .ant-list-item-meta .taobao { + color: #ff4000; + border-radius: 4px; +} +:global .ant-list-item-meta .dingding { + background-color: #2eabff; + color: #fff; + border-radius: 4px; +} +:global .ant-list-item-meta .alipay { + color: #2eabff; + border-radius: 4px; +} +:global font.strong { + color: #52c41a; +} +:global font.medium { + color: #faad14; +} +:global font.weak { + color: #f5222d; +} + + + + +.trigger { + background: 'red'; +} +.desc { + color: rgba(0, 0, 0, 0.45); +} +.desc h3 { + color: rgba(0, 0, 0, 0.45); +} +.desc h4 { + color: rgba(0, 0, 0, 0.45); +} +.information .label { + color: rgba(0, 0, 0, 0.85); +} +.errorIcon { + color: #f5222d; +} +.errorListItem { + border-bottom: 1px solid #e8e8e8; +} +.errorListItem:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.errorListItem:last-child { + border: 0; +} +.errorListItem .errorIcon { + color: #f5222d; +} +.errorListItem .errorField { + color: rgba(0, 0, 0, 0.45); +} +.optional { + color: rgba(0, 0, 0, 0.45); +} +a.listItemMetaTitle { + color: rgba(0, 0, 0, 0.85); +} +.noData { + color: rgba(0, 0, 0, 0.25); +} +.heading { + color: rgba(0, 0, 0, 0.85); +} +.textSecondary { + color: rgba(0, 0, 0, 0.45); +} +.title { + color: rgba(0, 0, 0, 0.85); +} +.main .icon { + color: rgba(0, 0, 0, 0.2); +} +.main .icon:hover { + color: @primary-color; +} +.success { + color: #52c41a; +} +.warning { + color: #faad14; +} +.error { + color: #f5222d; +} +.progress-pass > .progress :global .ant-progress-bg { + background-color: #faad14; +} +html { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; +} +h1, +h2, +h3, +h4, +h5, +h6 { + color: rgba(0, 0, 0, 0.85); +} +abbr[title], +abbr[data-original-title] { + border-bottom: 0; +} +a { + color: @primary-color; + background-color: transparent; +} +a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +a:active { + color: color(~`colorPalette("@{primary-color}", 7)`); +} +a[disabled] { + color: rgba(0, 0, 0, 0.25); +} +img { + border-style: none; +} +table { + border-collapse: collapse; +} +caption { + color: rgba(0, 0, 0, 0.45); +} +input, +button, +select, +optgroup, +textarea { + color: inherit; +} +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; +} +fieldset { + border: 0; +} +legend { + color: inherit; +} +mark { + background-color: #feffe6; +} +::selection { + background: @primary-color; + color: #fff; +} +[ant-click-animating-without-extra-node]:after, +.ant-click-animating-node { + border-radius: inherit; + border: 0 solid @primary-color; +} +.ant-alert { + color: rgba(0, 0, 0, 0.65); + border-radius: 4px; +} +.ant-alert-success { + border: 1px solid #b7eb8f; + background-color: #f6ffed; +} +.ant-alert-success .ant-alert-icon { + color: #52c41a; +} +.ant-alert-info { + border: 1px solid color(~`colorPalette("@{primary-color}", 3)`); + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-alert-info .ant-alert-icon { + color: @primary-color; +} +.ant-alert-warning { + border: 1px solid #ffe58f; + background-color: #fffbe6; +} +.ant-alert-warning .ant-alert-icon { + color: #faad14; +} +.ant-alert-error { + border: 1px solid #ffa39e; + background-color: #fff1f0; +} +.ant-alert-error .ant-alert-icon { + color: #f5222d; +} +.ant-alert-close-icon .anticon-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-alert-close-icon .anticon-close:hover { + color: #404040; +} +.ant-alert-with-description { + border-radius: 4px; + color: rgba(0, 0, 0, 0.65); +} +.ant-alert-with-description .ant-alert-message { + color: rgba(0, 0, 0, 0.85); +} +.ant-alert-banner { + border-radius: 0; + border: 0; +} +.ant-anchor { + color: rgba(0, 0, 0, 0.65); +} +.ant-anchor-wrapper { + background-color: #fff; +} +.ant-anchor-ink:before { + background-color: #e8e8e8; +} +.ant-anchor-ink-ball { + border-radius: 8px; + border: 2px solid @primary-color; + background-color: #fff; +} +.ant-anchor-link-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-anchor-link-active > .ant-anchor-link-title { + color: @primary-color; +} +.ant-select-auto-complete { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-auto-complete.ant-select .ant-select-selection { + border: 0; + box-shadow: none; +} +.ant-select-auto-complete.ant-select .ant-input { + background: transparent; + border-width: 1px; +} +.ant-select-auto-complete.ant-select .ant-input:focus, +.ant-select-auto-complete.ant-select .ant-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-avatar { + color: rgba(0, 0, 0, 0.65); + background: #ccc; + color: #fff; + border-radius: 50%; +} +.ant-avatar-image { + background: transparent; +} +.ant-avatar-lg { + border-radius: 50%; +} +.ant-avatar-sm { + border-radius: 50%; +} +.ant-avatar-square { + border-radius: 4px; +} +.ant-back-top { + color: rgba(0, 0, 0, 0.65); +} +.ant-back-top-content { + border-radius: 20px; + background-color: rgba(0, 0, 0, 0.45); + color: #fff; +} +.ant-back-top-content:hover { + background-color: rgba(0, 0, 0, 0.65); +} +.ant-back-top-icon { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCXQRLToRUmrKWCYuA2+jbN0MB4OQobYShfdTCgn/sL1K36M7TLrN3n+758aPy2rrpR6+/od5E8tf/A1uLS9aId5T7J3CNYihkQ4D9PiMdMC7mp4rjB9kjFjZp8BlnVHJBuO1yFXIV0FdDF3RlyFdJVQBdv5AxVdIsq8apiZ2PyYO1EVykesGfZEESsCkweyR8MUW+V8uJ1gkYipmpdP1pm2aJVPEGzAAAAAElFTkSuQmCC) 100%/100% no-repeat; +} +.ant-badge { + color: rgba(0, 0, 0, 0.65); + color: unset; +} +.ant-badge-count { + border-radius: 10px; + background: #f5222d; + color: #fff; + box-shadow: 0 0 0 1px #fff; +} +.ant-badge-count a, +.ant-badge-count a:hover { + color: #fff; +} +.ant-badge-dot { + border-radius: 100%; + background: #f5222d; + box-shadow: 0 0 0 1px #fff; +} +.ant-badge-status-dot { + border-radius: 50%; +} +.ant-badge-status-success { + background-color: #52c41a; +} +.ant-badge-status-processing { + background-color: @primary-color; +} +.ant-badge-status-processing:after { + border-radius: 50%; + border: 1px solid @primary-color; +} +.ant-badge-status-default { + background-color: #d9d9d9; +} +.ant-badge-status-error { + background-color: #f5222d; +} +.ant-badge-status-warning { + background-color: #faad14; +} +.ant-badge-status-text { + color: rgba(0, 0, 0, 0.65); +} +.ant-breadcrumb { + color: rgba(0, 0, 0, 0.65); + color: rgba(0, 0, 0, 0.45); +} +.ant-breadcrumb a { + color: rgba(0, 0, 0, 0.45); +} +.ant-breadcrumb a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-breadcrumb > span:last-child { + color: rgba(0, 0, 0, 0.65); +} +.ant-breadcrumb-separator { + color: rgba(0, 0, 0, 0.45); +} +.ant-btn { + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-color: #d9d9d9; +} +.ant-btn:not([disabled]):active { + box-shadow: none; +} +.ant-btn-lg { + border-radius: 4px; +} +.ant-btn-sm { + border-radius: 4px; +} +.ant-btn > a:only-child { + color: currentColor; +} +.ant-btn > a:only-child:after { + background: transparent; +} +.ant-btn:hover, +.ant-btn:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn:hover > a:only-child, +.ant-btn:focus > a:only-child { + color: currentColor; +} +.ant-btn:hover > a:only-child:after, +.ant-btn:focus > a:only-child:after { + background: transparent; +} +.ant-btn:active, +.ant-btn.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn:active > a:only-child, +.ant-btn.active > a:only-child { + color: currentColor; +} +.ant-btn:active > a:only-child:after, +.ant-btn.active > a:only-child:after { + background: transparent; +} +.ant-btn.disabled, +.ant-btn[disabled], +.ant-btn.disabled:hover, +.ant-btn[disabled]:hover, +.ant-btn.disabled:focus, +.ant-btn[disabled]:focus, +.ant-btn.disabled:active, +.ant-btn[disabled]:active, +.ant-btn.disabled.active, +.ant-btn[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn.disabled > a:only-child, +.ant-btn[disabled] > a:only-child, +.ant-btn.disabled:hover > a:only-child, +.ant-btn[disabled]:hover > a:only-child, +.ant-btn.disabled:focus > a:only-child, +.ant-btn[disabled]:focus > a:only-child, +.ant-btn.disabled:active > a:only-child, +.ant-btn[disabled]:active > a:only-child, +.ant-btn.disabled.active > a:only-child, +.ant-btn[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn.disabled > a:only-child:after, +.ant-btn[disabled] > a:only-child:after, +.ant-btn.disabled:hover > a:only-child:after, +.ant-btn[disabled]:hover > a:only-child:after, +.ant-btn.disabled:focus > a:only-child:after, +.ant-btn[disabled]:focus > a:only-child:after, +.ant-btn.disabled:active > a:only-child:after, +.ant-btn[disabled]:active > a:only-child:after, +.ant-btn.disabled.active > a:only-child:after, +.ant-btn[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn:hover, +.ant-btn:focus, +.ant-btn:active, +.ant-btn.active { + background: #fff; +} +.ant-btn-primary { + color: #fff; + background-color: @primary-color; + border-color: @primary-color; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035); +} +.ant-btn-primary > a:only-child { + color: currentColor; +} +.ant-btn-primary > a:only-child:after { + background: transparent; +} +.ant-btn-primary:hover, +.ant-btn-primary:focus { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 5)`); + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-primary:hover > a:only-child, +.ant-btn-primary:focus > a:only-child { + color: currentColor; +} +.ant-btn-primary:hover > a:only-child:after, +.ant-btn-primary:focus > a:only-child:after { + background: transparent; +} +.ant-btn-primary:active, +.ant-btn-primary.active { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 7)`); + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-primary:active > a:only-child, +.ant-btn-primary.active > a:only-child { + color: currentColor; +} +.ant-btn-primary:active > a:only-child:after, +.ant-btn-primary.active > a:only-child:after { + background: transparent; +} +.ant-btn-primary.disabled, +.ant-btn-primary[disabled], +.ant-btn-primary.disabled:hover, +.ant-btn-primary[disabled]:hover, +.ant-btn-primary.disabled:focus, +.ant-btn-primary[disabled]:focus, +.ant-btn-primary.disabled:active, +.ant-btn-primary[disabled]:active, +.ant-btn-primary.disabled.active, +.ant-btn-primary[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-primary.disabled > a:only-child, +.ant-btn-primary[disabled] > a:only-child, +.ant-btn-primary.disabled:hover > a:only-child, +.ant-btn-primary[disabled]:hover > a:only-child, +.ant-btn-primary.disabled:focus > a:only-child, +.ant-btn-primary[disabled]:focus > a:only-child, +.ant-btn-primary.disabled:active > a:only-child, +.ant-btn-primary[disabled]:active > a:only-child, +.ant-btn-primary.disabled.active > a:only-child, +.ant-btn-primary[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-primary.disabled > a:only-child:after, +.ant-btn-primary[disabled] > a:only-child:after, +.ant-btn-primary.disabled:hover > a:only-child:after, +.ant-btn-primary[disabled]:hover > a:only-child:after, +.ant-btn-primary.disabled:focus > a:only-child:after, +.ant-btn-primary[disabled]:focus > a:only-child:after, +.ant-btn-primary.disabled:active > a:only-child:after, +.ant-btn-primary[disabled]:active > a:only-child:after, +.ant-btn-primary.disabled.active > a:only-child:after, +.ant-btn-primary[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) { + border-right-color: color(~`colorPalette("@{primary-color}", 5)`); + border-left-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled { + border-color: #d9d9d9; +} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child) { + border-right-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] { + border-right-color: #d9d9d9; +} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child), +.ant-btn-group .ant-btn-primary + .ant-btn-primary { + border-left-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], +.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] { + border-left-color: #d9d9d9; +} +.ant-btn-ghost { + color: rgba(0, 0, 0, 0.65); + background-color: transparent; + border-color: #d9d9d9; +} +.ant-btn-ghost > a:only-child { + color: currentColor; +} +.ant-btn-ghost > a:only-child:after { + background: transparent; +} +.ant-btn-ghost:hover, +.ant-btn-ghost:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-ghost:hover > a:only-child, +.ant-btn-ghost:focus > a:only-child { + color: currentColor; +} +.ant-btn-ghost:hover > a:only-child:after, +.ant-btn-ghost:focus > a:only-child:after { + background: transparent; +} +.ant-btn-ghost:active, +.ant-btn-ghost.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-ghost:active > a:only-child, +.ant-btn-ghost.active > a:only-child { + color: currentColor; +} +.ant-btn-ghost:active > a:only-child:after, +.ant-btn-ghost.active > a:only-child:after { + background: transparent; +} +.ant-btn-ghost.disabled, +.ant-btn-ghost[disabled], +.ant-btn-ghost.disabled:hover, +.ant-btn-ghost[disabled]:hover, +.ant-btn-ghost.disabled:focus, +.ant-btn-ghost[disabled]:focus, +.ant-btn-ghost.disabled:active, +.ant-btn-ghost[disabled]:active, +.ant-btn-ghost.disabled.active, +.ant-btn-ghost[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-ghost.disabled > a:only-child, +.ant-btn-ghost[disabled] > a:only-child, +.ant-btn-ghost.disabled:hover > a:only-child, +.ant-btn-ghost[disabled]:hover > a:only-child, +.ant-btn-ghost.disabled:focus > a:only-child, +.ant-btn-ghost[disabled]:focus > a:only-child, +.ant-btn-ghost.disabled:active > a:only-child, +.ant-btn-ghost[disabled]:active > a:only-child, +.ant-btn-ghost.disabled.active > a:only-child, +.ant-btn-ghost[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-ghost.disabled > a:only-child:after, +.ant-btn-ghost[disabled] > a:only-child:after, +.ant-btn-ghost.disabled:hover > a:only-child:after, +.ant-btn-ghost[disabled]:hover > a:only-child:after, +.ant-btn-ghost.disabled:focus > a:only-child:after, +.ant-btn-ghost[disabled]:focus > a:only-child:after, +.ant-btn-ghost.disabled:active > a:only-child:after, +.ant-btn-ghost[disabled]:active > a:only-child:after, +.ant-btn-ghost.disabled.active > a:only-child:after, +.ant-btn-ghost[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-dashed { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-color: #d9d9d9; + border-style: dashed; +} +.ant-btn-dashed > a:only-child { + color: currentColor; +} +.ant-btn-dashed > a:only-child:after { + background: transparent; +} +.ant-btn-dashed:hover, +.ant-btn-dashed:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-dashed:hover > a:only-child, +.ant-btn-dashed:focus > a:only-child { + color: currentColor; +} +.ant-btn-dashed:hover > a:only-child:after, +.ant-btn-dashed:focus > a:only-child:after { + background: transparent; +} +.ant-btn-dashed:active, +.ant-btn-dashed.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: #fff; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-dashed:active > a:only-child, +.ant-btn-dashed.active > a:only-child { + color: currentColor; +} +.ant-btn-dashed:active > a:only-child:after, +.ant-btn-dashed.active > a:only-child:after { + background: transparent; +} +.ant-btn-dashed.disabled, +.ant-btn-dashed[disabled], +.ant-btn-dashed.disabled:hover, +.ant-btn-dashed[disabled]:hover, +.ant-btn-dashed.disabled:focus, +.ant-btn-dashed[disabled]:focus, +.ant-btn-dashed.disabled:active, +.ant-btn-dashed[disabled]:active, +.ant-btn-dashed.disabled.active, +.ant-btn-dashed[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-dashed.disabled > a:only-child, +.ant-btn-dashed[disabled] > a:only-child, +.ant-btn-dashed.disabled:hover > a:only-child, +.ant-btn-dashed[disabled]:hover > a:only-child, +.ant-btn-dashed.disabled:focus > a:only-child, +.ant-btn-dashed[disabled]:focus > a:only-child, +.ant-btn-dashed.disabled:active > a:only-child, +.ant-btn-dashed[disabled]:active > a:only-child, +.ant-btn-dashed.disabled.active > a:only-child, +.ant-btn-dashed[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-dashed.disabled > a:only-child:after, +.ant-btn-dashed[disabled] > a:only-child:after, +.ant-btn-dashed.disabled:hover > a:only-child:after, +.ant-btn-dashed[disabled]:hover > a:only-child:after, +.ant-btn-dashed.disabled:focus > a:only-child:after, +.ant-btn-dashed[disabled]:focus > a:only-child:after, +.ant-btn-dashed.disabled:active > a:only-child:after, +.ant-btn-dashed[disabled]:active > a:only-child:after, +.ant-btn-dashed.disabled.active > a:only-child:after, +.ant-btn-dashed[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-danger { + color: #f5222d; + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-btn-danger > a:only-child { + color: currentColor; +} +.ant-btn-danger > a:only-child:after { + background: transparent; +} +.ant-btn-danger:hover { + color: #fff; + background-color: #ff4d4f; + border-color: #ff4d4f; +} +.ant-btn-danger:hover > a:only-child { + color: currentColor; +} +.ant-btn-danger:hover > a:only-child:after { + background: transparent; +} +.ant-btn-danger:focus { + color: #ff4d4f; + background-color: #fff; + border-color: #ff4d4f; +} +.ant-btn-danger:focus > a:only-child { + color: currentColor; +} +.ant-btn-danger:focus > a:only-child:after { + background: transparent; +} +.ant-btn-danger:active, +.ant-btn-danger.active { + color: #fff; + background-color: #cf1322; + border-color: #cf1322; +} +.ant-btn-danger:active > a:only-child, +.ant-btn-danger.active > a:only-child { + color: currentColor; +} +.ant-btn-danger:active > a:only-child:after, +.ant-btn-danger.active > a:only-child:after { + background: transparent; +} +.ant-btn-danger.disabled, +.ant-btn-danger[disabled], +.ant-btn-danger.disabled:hover, +.ant-btn-danger[disabled]:hover, +.ant-btn-danger.disabled:focus, +.ant-btn-danger[disabled]:focus, +.ant-btn-danger.disabled:active, +.ant-btn-danger[disabled]:active, +.ant-btn-danger.disabled.active, +.ant-btn-danger[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-danger.disabled > a:only-child, +.ant-btn-danger[disabled] > a:only-child, +.ant-btn-danger.disabled:hover > a:only-child, +.ant-btn-danger[disabled]:hover > a:only-child, +.ant-btn-danger.disabled:focus > a:only-child, +.ant-btn-danger[disabled]:focus > a:only-child, +.ant-btn-danger.disabled:active > a:only-child, +.ant-btn-danger[disabled]:active > a:only-child, +.ant-btn-danger.disabled.active > a:only-child, +.ant-btn-danger[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-danger.disabled > a:only-child:after, +.ant-btn-danger[disabled] > a:only-child:after, +.ant-btn-danger.disabled:hover > a:only-child:after, +.ant-btn-danger[disabled]:hover > a:only-child:after, +.ant-btn-danger.disabled:focus > a:only-child:after, +.ant-btn-danger[disabled]:focus > a:only-child:after, +.ant-btn-danger.disabled:active > a:only-child:after, +.ant-btn-danger[disabled]:active > a:only-child:after, +.ant-btn-danger.disabled.active > a:only-child:after, +.ant-btn-danger[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-circle, +.ant-btn-circle-outline { + border-radius: 50%; +} +.ant-btn-circle.ant-btn-lg, +.ant-btn-circle-outline.ant-btn-lg { + border-radius: 50%; +} +.ant-btn-circle.ant-btn-sm, +.ant-btn-circle-outline.ant-btn-sm { + border-radius: 50%; +} +.ant-btn:before { + background: #fff; + border-radius: inherit; +} +.ant-btn-group-lg > .ant-btn, +.ant-btn-group-lg > span > .ant-btn { + border-radius: 0; +} +.ant-btn-group-sm > .ant-btn, +.ant-btn-group-sm > span > .ant-btn { + border-radius: 0; +} +.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) { + border-left-color: transparent; +} +.ant-btn-group .ant-btn { + border-radius: 0; +} +.ant-btn-group > .ant-btn:only-child { + border-radius: 4px; +} +.ant-btn-group > span:only-child > .ant-btn { + border-radius: 4px; +} +.ant-btn-group > .ant-btn:first-child:not(:last-child), +.ant-btn-group > span:first-child:not(:last-child) > .ant-btn { + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.ant-btn-group > .ant-btn:last-child:not(:first-child), +.ant-btn-group > span:last-child:not(:first-child) > .ant-btn { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.ant-btn-group-sm > .ant-btn:only-child { + border-radius: 4px; +} +.ant-btn-group-sm > span:only-child > .ant-btn { + border-radius: 4px; +} +.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), +.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn { + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), +.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn { + border-radius: 0; +} +.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-btn-background-ghost { + background: transparent !important; + border-color: #fff; + color: #fff; +} +.ant-btn-background-ghost.ant-btn-primary { + color: @primary-color; + background-color: transparent; + border-color: @primary-color; +} +.ant-btn-background-ghost.ant-btn-primary > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary:hover, +.ant-btn-background-ghost.ant-btn-primary:focus { + color: color(~`colorPalette("@{primary-color}", 5)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary:active, +.ant-btn-background-ghost.ant-btn-primary.active { + color: color(~`colorPalette("@{primary-color}", 7)`); + background-color: transparent; + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.active > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-primary.disabled, +.ant-btn-background-ghost.ant-btn-primary[disabled], +.ant-btn-background-ghost.ant-btn-primary.disabled:hover, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus, +.ant-btn-background-ghost.ant-btn-primary.disabled:active, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active, +.ant-btn-background-ghost.ant-btn-primary.disabled.active, +.ant-btn-background-ghost.ant-btn-primary[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child, +.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger { + color: #f5222d; + background-color: transparent; + border-color: #f5222d; +} +.ant-btn-background-ghost.ant-btn-danger > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger:hover, +.ant-btn-background-ghost.ant-btn-danger:focus { + color: #ff4d4f; + background-color: transparent; + border-color: #ff4d4f; +} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger:active, +.ant-btn-background-ghost.ant-btn-danger.active { + color: #cf1322; + background-color: transparent; + border-color: #cf1322; +} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.active > a:only-child:after { + background: transparent; +} +.ant-btn-background-ghost.ant-btn-danger.disabled, +.ant-btn-background-ghost.ant-btn-danger[disabled], +.ant-btn-background-ghost.ant-btn-danger.disabled:hover, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus, +.ant-btn-background-ghost.ant-btn-danger.disabled:active, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active, +.ant-btn-background-ghost.ant-btn-danger.disabled.active, +.ant-btn-background-ghost.ant-btn-danger[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child, +.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child { + color: currentColor; +} +.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child:after, +.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child:after { + background: transparent; +} +.christmas.ant-btn-primary:before { + background: url(data:image/png;base64,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) no-repeat 50% 0; + background-size: 64px; +} +.christmas.ant-btn-primary.ant-btn-lg:before { + background-size: 72px; +} +.christmas.ant-btn-primary.ant-btn-sm:before { + background-size: 56px; +} +.ant-fullcalendar { + color: rgba(0, 0, 0, 0.65); + border-top: 1px solid #d9d9d9; +} +.ant-fullcalendar table { + border-collapse: collapse; + background-color: transparent; +} +.ant-fullcalendar table, +.ant-fullcalendar th, +.ant-fullcalendar td { + border: 0; +} +.ant-fullcalendar-calendar-table { + border-spacing: 0; +} +.ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.65); + border-radius: 2px; + background: transparent; +} +.ant-fullcalendar-value:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-fullcalendar-value:active { + background: @primary-color; + color: #fff; +} +.ant-fullcalendar-today .ant-fullcalendar-value, +.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value { + box-shadow: 0 0 0 1px @primary-color inset; +} +.ant-fullcalendar-selected-day .ant-fullcalendar-value, +.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value { + background: @primary-color; + color: #fff; +} +.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.ant-fullcalendar-last-month-cell .ant-fullcalendar-value, +.ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.25); +} +.ant-fullcalendar-month-panel-table { + border-collapse: separate; +} +.ant-fullcalendar-fullscreen { + border-top: 0; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date { + color: rgba(0, 0, 0, 0.65); + border-top: 2px solid #e8e8e8; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month:active, +.ant-fullcalendar-fullscreen .ant-fullcalendar-date:active { + background: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-value { + background: transparent; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.65); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date { + border-top-color: @primary-color; + background: transparent; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, +.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value { + box-shadow: none; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month, +.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, +.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value { + color: @primary-color; +} +.ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date, +.ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date { + color: rgba(0, 0, 0, 0.25); +} +.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date, +.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover { + background: transparent; +} +.ant-fullcalendar-disabled-cell .ant-fullcalendar-value { + color: rgba(0, 0, 0, 0.25); + border-radius: 0; +} +.ant-card { + color: rgba(0, 0, 0, 0.65); + background: #fff; + border-radius: 2px; +} +.ant-card-hoverable:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09); + border-color: rgba(0, 0, 0, 0.09); +} +.ant-card-bordered { + border: 1px solid #e8e8e8; +} +.ant-card-head { + background: transparent; + border-bottom: 1px solid #e8e8e8; + border-radius: 2px 2px 0 0; + color: rgba(0, 0, 0, 0.85); +} +.ant-card-head .ant-tabs { + color: rgba(0, 0, 0, 0.65); +} +.ant-card-head .ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; +} +.ant-card-extra { + color: rgba(0, 0, 0, 0.65); +} +.ant-card-grid { + border-radius: 0; + border: 0; + box-shadow: 1px 0 0 0 #e8e8e8, 0 1px 0 0 #e8e8e8, 1px 1px 0 0 #e8e8e8, 1px 0 0 0 #e8e8e8 inset, 0 1px 0 0 #e8e8e8 inset; +} +.ant-card-grid:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-card-cover img { + border-radius: 2px 2px 0 0; +} +.ant-card-actions { + border-top: 1px solid #e8e8e8; + background: #fafafa; +} +.ant-card-actions > li { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-actions > li > span:hover { + color: @primary-color; +} +.ant-card-actions > li > span a { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-actions > li > span a:hover { + color: @primary-color; +} +.ant-card-actions > li:not(:last-child) { + border-right: 1px solid #e8e8e8; +} +.ant-card-type-inner .ant-card-head { + background: #fafafa; +} +.ant-card-meta-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-card-meta-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-card-loading-block { + border-radius: 2px; + background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2)); + background-size: 600% 600%; +} +.ant-carousel { + color: rgba(0, 0, 0, 0.65); +} +.ant-carousel .slick-slider { + -webkit-tap-highlight-color: transparent; +} +.ant-carousel .slick-vertical .slick-slide { + border: 1px solid transparent; +} +.ant-carousel .slick-prev, +.ant-carousel .slick-next { + background: transparent; + color: transparent; + border: 0; +} +.ant-carousel .slick-prev:hover, +.ant-carousel .slick-next:hover, +.ant-carousel .slick-prev:focus, +.ant-carousel .slick-next:focus { + background: transparent; + color: transparent; +} +.ant-carousel .slick-dots li button { + border: 0; + background: #fff; + border-radius: 1px; + color: transparent; +} +.ant-carousel .slick-dots li.slick-active button { + background: #fff; +} +.ant-cascader { + color: rgba(0, 0, 0, 0.65); +} +.ant-cascader-input.ant-input { + background-color: transparent !important; +} +.ant-cascader-picker { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-radius: 4px; +} +.ant-cascader-picker-with-value .ant-cascader-picker-label { + color: transparent; +} +.ant-cascader-picker-disabled { + background: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker:focus .ant-cascader-input { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-cascader-picker-show-search.ant-cascader-picker-focused { + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker-clear { + background: #fff; + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-picker-clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-cascader-picker-arrow { + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-menus { + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-cascader-menu { + border-right: 1px solid #e8e8e8; +} +.ant-cascader-menu:first-child { + border-radius: 4px 0 0 4px; +} +.ant-cascader-menu:last-child { + border-right-color: transparent; + border-radius: 0 4px 4px 0; +} +.ant-cascader-menu:only-child { + border-radius: 4px; +} +.ant-cascader-menu-item:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-cascader-menu-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-cascader-menu-item-disabled:hover { + background: transparent; +} +.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), +.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover { + background: #f5f5f5; +} +.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, +.ant-cascader-menu-item-expand .ant-cascader-menu-item-loading-icon { + color: rgba(0, 0, 0, 0.45); +} +.ant-cascader-menu-item .ant-cascader-menu-item-keyword { + color: #f5222d; +} +.ant-checkbox { + color: rgba(0, 0, 0, 0.65); +} +.ant-checkbox-wrapper:hover .ant-checkbox-inner, +.ant-checkbox:hover .ant-checkbox-inner, +.ant-checkbox-input:focus + .ant-checkbox-inner { + border-color: @primary-color; +} +.ant-checkbox-checked:after { + border-radius: 2px; + border: 1px solid @primary-color; +} +.ant-checkbox-inner { + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; +} +.ant-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-checkbox-indeterminate .ant-checkbox-inner:after { + border: 0; + background-color: @primary-color; +} +.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-checked .ant-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-checkbox-checked .ant-checkbox-inner { + background-color: @primary-color; + border-color: @primary-color; +} +.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-disabled .ant-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-checkbox-disabled .ant-checkbox-inner:after { + border-color: #f5f5f5; +} +.ant-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-checkbox-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-checkbox-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-collapse { + color: rgba(0, 0, 0, 0.65); + background-color: #fafafa; + border-radius: 4px; + border: 1px solid #d9d9d9; + border-bottom: 0; +} +.ant-collapse > .ant-collapse-item { + border-bottom: 1px solid #d9d9d9; +} +.ant-collapse > .ant-collapse-item:last-child, +.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header { + border-radius: 0 0 4px 4px; +} +.ant-collapse > .ant-collapse-item > .ant-collapse-header { + color: rgba(0, 0, 0, 0.85); +} +.ant-collapse-content { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + border-top: 1px solid #d9d9d9; +} +.ant-collapse-item:last-child > .ant-collapse-content { + border-radius: 0 0 4px 4px; +} +.ant-collapse-borderless { + background-color: #fff; + border: 0; +} +.ant-collapse-borderless > .ant-collapse-item { + border-bottom: 1px solid #d9d9d9; +} +.ant-collapse-borderless > .ant-collapse-item:last-child, +.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header { + border-radius: 0; +} +.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content { + background-color: transparent; + border-top: 0; +} +.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header, +.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-picker-container { + color: rgba(0, 0, 0, 0.65); +} +.ant-calendar-picker { + color: rgba(0, 0, 0, 0.65); +} +.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) { + border-color: @primary-color; +} +.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-calendar-picker-clear { + color: rgba(0, 0, 0, 0.25); + background: #fff; +} +.ant-calendar-picker-clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-picker-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar { + border: 1px solid #fff; + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; +} +.ant-calendar-input-wrap { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-input { + border: 0; + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-calendar-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-calendar-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-header .ant-calendar-century-select, +.ant-calendar-header .ant-calendar-decade-select, +.ant-calendar-header .ant-calendar-year-select, +.ant-calendar-header .ant-calendar-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-header .ant-calendar-prev-century-btn, +.ant-calendar-header .ant-calendar-next-century-btn, +.ant-calendar-header .ant-calendar-prev-decade-btn, +.ant-calendar-header .ant-calendar-next-decade-btn, +.ant-calendar-header .ant-calendar-prev-month-btn, +.ant-calendar-header .ant-calendar-next-month-btn, +.ant-calendar-header .ant-calendar-prev-year-btn, +.ant-calendar-header .ant-calendar-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar table { + border-collapse: collapse; + background-color: transparent; +} +.ant-calendar table, +.ant-calendar th, +.ant-calendar td { + border: 0; +} +.ant-calendar-calendar-table { + border-spacing: 0; +} +.ant-calendar-date { + color: rgba(0, 0, 0, 0.65); + border-radius: 2px; + border: 1px solid transparent; + background: transparent; +} +.ant-calendar-date:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-date:active { + color: #fff; + background: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-today .ant-calendar-date { + border-color: @primary-color; + color: @primary-color; +} +.ant-calendar-last-month-cell .ant-calendar-date, +.ant-calendar-next-month-btn-day .ant-calendar-date { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-selected-day .ant-calendar-date { + background: #d1e9ff; +} +.ant-calendar-selected-date .ant-calendar-date, +.ant-calendar-selected-start-date .ant-calendar-date, +.ant-calendar-selected-end-date .ant-calendar-date { + background: @primary-color; + color: #fff; + border: 1px solid transparent; +} +.ant-calendar-selected-date .ant-calendar-date:hover, +.ant-calendar-selected-start-date .ant-calendar-date:hover, +.ant-calendar-selected-end-date .ant-calendar-date:hover { + background: @primary-color; +} +.ant-calendar-disabled-cell .ant-calendar-date { + color: #bcbcbc; + background: #f5f5f5; + border-radius: 0; + border: 1px solid transparent; +} +.ant-calendar-disabled-cell .ant-calendar-date:hover { + background: #f5f5f5; +} +.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date:before { + border: 1px solid #bcbcbc; + border-radius: 2px; +} +.ant-calendar-disabled-cell-first-of-row .ant-calendar-date { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-calendar-disabled-cell-last-of-row .ant-calendar-date { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.ant-calendar-footer { + border-top: 1px solid #e8e8e8; +} +.ant-calendar-footer:empty { + border-top: 0; +} +.ant-calendar .ant-calendar-today-btn-disabled, +.ant-calendar .ant-calendar-clear-btn-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar .ant-calendar-clear-btn:after { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar .ant-calendar-clear-btn:hover:after { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar .ant-calendar-ok-btn { + background-image: none; + border: 1px solid transparent; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + color: #fff; + background-color: @primary-color; + border-color: @primary-color; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035); + border-radius: 4px; +} +.ant-calendar .ant-calendar-ok-btn:not([disabled]):active { + box-shadow: none; +} +.ant-calendar .ant-calendar-ok-btn-lg { + border-radius: 4px; +} +.ant-calendar .ant-calendar-ok-btn-sm { + border-radius: 4px; +} +.ant-calendar .ant-calendar-ok-btn > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn:hover, +.ant-calendar .ant-calendar-ok-btn:focus { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 5)`); + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar .ant-calendar-ok-btn:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn:focus > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn:focus > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn:active, +.ant-calendar .ant-calendar-ok-btn.active { + color: #fff; + background-color: color(~`colorPalette("@{primary-color}", 7)`); + border-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-calendar .ant-calendar-ok-btn:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn.active > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.active > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn.disabled, +.ant-calendar .ant-calendar-ok-btn[disabled], +.ant-calendar .ant-calendar-ok-btn.disabled:hover, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover, +.ant-calendar .ant-calendar-ok-btn.disabled:focus, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus, +.ant-calendar .ant-calendar-ok-btn.disabled:active, +.ant-calendar .ant-calendar-ok-btn[disabled]:active, +.ant-calendar .ant-calendar-ok-btn.disabled.active, +.ant-calendar .ant-calendar-ok-btn[disabled].active { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child, +.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child, +.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child:after, +.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn-disabled { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child:after { + background: transparent; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + border-color: #d9d9d9; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child { + color: currentColor; +} +.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child:after { + background: transparent; +} +.ant-calendar-range-picker-input { + background-color: transparent; + border: 0; +} +.ant-calendar-range-picker-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range-picker-separator { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-range-left .ant-calendar-time-picker-inner { + border-right: 1px solid #e8e8e8; +} +.ant-calendar-range-right .ant-calendar-time-picker-inner { + border-left: 1px solid #e8e8e8; +} +.ant-calendar-range-middle { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-range .ant-calendar-input, +.ant-calendar-range .ant-calendar-time-picker-input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + border: 0; + box-shadow: none; +} +.ant-calendar-range .ant-calendar-input::-moz-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input:-ms-input-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input::-webkit-input-placeholder, +.ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-calendar-range .ant-calendar-input:hover, +.ant-calendar-range .ant-calendar-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-calendar-range .ant-calendar-input:focus, +.ant-calendar-range .ant-calendar-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-calendar-range .ant-calendar-input-disabled, +.ant-calendar-range .ant-calendar-time-picker-input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-range .ant-calendar-input-disabled:hover, +.ant-calendar-range .ant-calendar-time-picker-input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-calendar-range .ant-calendar-input:focus, +.ant-calendar-range .ant-calendar-time-picker-input:focus { + box-shadow: none; +} +.ant-calendar-range .ant-calendar-in-range-cell { + border-radius: 0; +} +.ant-calendar-range .ant-calendar-in-range-cell:before { + background: color(~`colorPalette("@{primary-color}", 1)`); + border-radius: 0; + border: 0; +} +.ant-calendar-range .ant-calendar-header, +.ant-calendar-range .ant-calendar-month-panel-header, +.ant-calendar-range .ant-calendar-year-panel-header { + border-bottom: 0; +} +.ant-calendar-range .ant-calendar-body, +.ant-calendar-range .ant-calendar-month-panel-body, +.ant-calendar-range .ant-calendar-year-panel-body { + border-top: 1px solid #e8e8e8; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner { + background: none; +} +.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox { + background-color: #fff; + border-top: 1px solid #e8e8e8; +} +.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body { + border-top-color: transparent; +} +.ant-calendar-time-picker { + background-color: #fff; +} +.ant-calendar-time-picker-inner { + background-color: #fff; + background-clip: padding-box; +} +.ant-calendar-time-picker-select { + border-right: 1px solid #e8e8e8; +} +.ant-calendar-time-picker-select:first-child { + border-left: 0; +} +.ant-calendar-time-picker-select:last-child { + border-right: 0; +} +.ant-calendar-time-picker-select li:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +li.ant-calendar-time-picker-select-option-selected { + background: #f5f5f5; +} +li.ant-calendar-time-picker-select-option-disabled { + color: rgba(0, 0, 0, 0.25); +} +li.ant-calendar-time-picker-select-option-disabled:hover { + background: transparent; +} +.ant-calendar-time .ant-calendar-day-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-month-panel { + border-radius: 4px; + background: #fff; +} +.ant-calendar-month-panel-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-month-panel-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select, +.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn, +.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-month-panel-table { + border-collapse: separate; +} +.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month { + background: @primary-color; + color: #fff; +} +.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover { + background: @primary-color; + color: #fff; +} +.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month, +.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover { + color: #bcbcbc; + background: #f5f5f5; +} +.ant-calendar-month-panel-month { + color: rgba(0, 0, 0, 0.65); + background: transparent; + border-radius: 2px; +} +.ant-calendar-month-panel-month:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-year-panel { + border-radius: 4px; + background: #fff; +} +.ant-calendar-year-panel-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-year-panel-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select, +.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn, +.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-year-panel-table { + border-collapse: separate; +} +.ant-calendar-year-panel-year { + color: rgba(0, 0, 0, 0.65); + background: transparent; + border-radius: 2px; +} +.ant-calendar-year-panel-year:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year { + background: @primary-color; + color: #fff; +} +.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover { + background: @primary-color; + color: #fff; +} +.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year, +.ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-decade-panel { + background: #fff; + border-radius: 4px; +} +.ant-calendar-decade-panel-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-calendar-decade-panel-header a:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select { + color: rgba(0, 0, 0, 0.85); +} +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn, +.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn { + color: rgba(0, 0, 0, 0.45); +} +.ant-calendar-decade-panel-table { + border-collapse: separate; +} +.ant-calendar-decade-panel-decade { + color: rgba(0, 0, 0, 0.65); + background: transparent; + border-radius: 2px; +} +.ant-calendar-decade-panel-decade:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade { + background: @primary-color; + color: #fff; +} +.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover { + background: @primary-color; + color: #fff; +} +.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade, +.ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade { + color: rgba(0, 0, 0, 0.25); +} +.ant-calendar-week-number .ant-calendar-body tr:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week { + background: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date, +.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date { + background: transparent; + color: rgba(0, 0, 0, 0.65); +} +.ant-divider { + color: rgba(0, 0, 0, 0.65); + background: #e8e8e8; +} +.ant-divider-horizontal.ant-divider-with-text, +.ant-divider-horizontal.ant-divider-with-text-left, +.ant-divider-horizontal.ant-divider-with-text-right { + background: transparent; + color: rgba(0, 0, 0, 0.85); +} +.ant-divider-horizontal.ant-divider-with-text:before, +.ant-divider-horizontal.ant-divider-with-text-left:before, +.ant-divider-horizontal.ant-divider-with-text-right:before, +.ant-divider-horizontal.ant-divider-with-text:after, +.ant-divider-horizontal.ant-divider-with-text-left:after, +.ant-divider-horizontal.ant-divider-with-text-right:after { + border-top: 1px solid #e8e8e8; +} +.ant-divider-dashed { + background: none; + border-top: 1px dashed #e8e8e8; +} +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed, +.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed, +.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed { + border-top: 0; +} +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:before, +.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:before, +.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:before, +.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:after, +.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:after, +.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:after { + border-style: dashed none none; +} +.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper { + box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15); +} +.ant-drawer-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-drawer-content { + background-color: #fff; + border: 0; + background-clip: padding-box; +} +.ant-drawer-close { + border: 0; + background: transparent; + color: rgba(0, 0, 0, 0.45); +} +.ant-drawer-close:focus, +.ant-drawer-close:hover { + color: #444; +} +.ant-drawer-header { + border-radius: 4px 4px 0 0; + background: #fff; + color: rgba(0, 0, 0, 0.65); + border-bottom: 1px solid #e8e8e8; +} +.ant-drawer-mask { + background-color: rgba(0, 0, 0, 0.65); +} +.ant-drawer-open-content { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} +.ant-dropdown { + color: rgba(0, 0, 0, 0.65); +} +.ant-dropdown-menu { + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; +} +.ant-dropdown-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-dropdown-menu-item, +.ant-dropdown-menu-submenu-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-dropdown-menu-item > a, +.ant-dropdown-menu-submenu-title > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-dropdown-menu-item-selected, +.ant-dropdown-menu-submenu-title-selected, +.ant-dropdown-menu-item-selected > a, +.ant-dropdown-menu-submenu-title-selected > a { + color: @primary-color; + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-dropdown-menu-item:hover, +.ant-dropdown-menu-submenu-title:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-dropdown-menu-item-disabled, +.ant-dropdown-menu-submenu-title-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-dropdown-menu-item-disabled:hover, +.ant-dropdown-menu-submenu-title-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-dropdown-menu-item-divider, +.ant-dropdown-menu-submenu-title-divider { + background-color: #e8e8e8; +} +.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, +.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon { + color: rgba(0, 0, 0, 0.45); +} +.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title, +.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-dropdown-menu-dark, +.ant-dropdown-menu-dark .ant-dropdown-menu { + background: #001529; +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a { + color: rgba(255, 255, 255, 0.65); +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after { + color: rgba(255, 255, 255, 0.65); +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover { + color: #fff; + background: transparent; +} +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, +.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a { + background: @primary-color; + color: #fff; +} +.ant-form { + color: rgba(0, 0, 0, 0.65); +} +.ant-form legend { + color: rgba(0, 0, 0, 0.45); + border: 0; + border-bottom: 1px solid #d9d9d9; +} +.ant-form output { + color: rgba(0, 0, 0, 0.65); +} +.ant-form-item-required:before { + color: #f5222d; +} +.ant-form-item { + color: rgba(0, 0, 0, 0.65); +} +.ant-form-item-label label { + color: rgba(0, 0, 0, 0.85); +} +.ant-form-explain, +.ant-form-extra { + color: rgba(0, 0, 0, 0.45); +} +form .ant-upload { + background: transparent; +} +.ant-input-group-wrap .ant-select-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group-wrap .ant-select-selection:hover { + border-color: #d9d9d9; +} +.ant-input-group-wrap .ant-select-selection--single { + background-color: #eee; +} +.ant-input-group-wrap .ant-select-open .ant-select-selection { + border-color: #d9d9d9; + box-shadow: none; +} +.has-success.has-feedback .ant-form-item-children-icon { + color: #52c41a; +} +.has-warning .ant-form-explain, +.has-warning .ant-form-split { + color: #faad14; +} +.has-warning .ant-input, +.has-warning .ant-input:hover { + border-color: #faad14; +} +.has-warning .ant-input:focus { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-input:not([disabled]):hover { + border-color: #faad14; +} +.has-warning .ant-calendar-picker-open .ant-calendar-picker-input { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-input-prefix { + color: #faad14; +} +.has-warning .ant-input-group-addon { + color: #faad14; + border-color: #faad14; + background-color: #fff; +} +.has-warning .has-feedback { + color: #faad14; +} +.has-warning.has-feedback .ant-form-item-children-icon { + color: #faad14; +} +.has-warning .ant-select-selection { + border-color: #faad14; +} +.has-warning .ant-select-open .ant-select-selection, +.has-warning .ant-select-focused .ant-select-selection { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-calendar-picker-icon:after, +.has-warning .ant-time-picker-icon:after, +.has-warning .ant-picker-icon:after, +.has-warning .ant-select-arrow, +.has-warning .ant-cascader-picker-arrow { + color: #faad14; +} +.has-warning .ant-input-number, +.has-warning .ant-time-picker-input { + border-color: #faad14; +} +.has-warning .ant-input-number-focused, +.has-warning .ant-time-picker-input-focused, +.has-warning .ant-input-number:focus, +.has-warning .ant-time-picker-input:focus { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-warning .ant-input-number:not([disabled]):hover, +.has-warning .ant-time-picker-input:not([disabled]):hover { + border-color: #faad14; +} +.has-warning .ant-cascader-picker:focus .ant-cascader-input { + border-color: #ffc53d; + box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-form-explain, +.has-error .ant-form-split { + color: #f5222d; +} +.has-error .ant-input, +.has-error .ant-input:hover { + border-color: #f5222d; +} +.has-error .ant-input:focus { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-input:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-calendar-picker-open .ant-calendar-picker-input { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-input-prefix { + color: #f5222d; +} +.has-error .ant-input-group-addon { + color: #f5222d; + border-color: #f5222d; + background-color: #fff; +} +.has-error .has-feedback { + color: #f5222d; +} +.has-error.has-feedback .ant-form-item-children-icon { + color: #f5222d; +} +.has-error .ant-select-selection { + border-color: #f5222d; +} +.has-error .ant-select-open .ant-select-selection, +.has-error .ant-select-focused .ant-select-selection { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-select.ant-select-auto-complete .ant-input:focus { + border-color: #f5222d; +} +.has-error .ant-input-group-addon .ant-select-selection { + border-color: transparent; + box-shadow: none; +} +.has-error .ant-calendar-picker-icon:after, +.has-error .ant-time-picker-icon:after, +.has-error .ant-picker-icon:after, +.has-error .ant-select-arrow, +.has-error .ant-cascader-picker-arrow { + color: #f5222d; +} +.has-error .ant-input-number, +.has-error .ant-time-picker-input { + border-color: #f5222d; +} +.has-error .ant-input-number-focused, +.has-error .ant-time-picker-input-focused, +.has-error .ant-input-number:focus, +.has-error .ant-time-picker-input:focus { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-input-number:not([disabled]):hover, +.has-error .ant-time-picker-input:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-mention-wrapper .ant-mention-editor, +.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover { + border-color: #f5222d; +} +.has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, +.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.has-error .ant-cascader-picker:focus .ant-cascader-input { + border-color: #ff4d4f; + box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2); + border-right-width: 1px !important; +} +.is-validating.has-feedback .ant-form-item-children-icon { + color: @primary-color; +} +.ant-input-number { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-input-number::-moz-placeholder { + color: #bfbfbf; +} +.ant-input-number:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input-number::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input-number:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-number:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-number-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-number-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-input-number-handler { + color: rgba(0, 0, 0, 0.45); +} +.ant-input-number-handler:active { + background: #f4f4f4; +} +.ant-input-number-handler:hover .ant-input-number-handler-up-inner, +.ant-input-number-handler:hover .ant-input-number-handler-down-inner { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-input-number-handler-up-inner, +.ant-input-number-handler-down-inner { + color: rgba(0, 0, 0, 0.45); +} +.ant-input-number:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-number-focused { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-number-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-number-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-input-number-input { + background-color: transparent; + border: 0; + border-radius: 4px; +} +.ant-input-number-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-input-number-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input-number-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input-number-handler-wrap { + border-left: 1px solid #d9d9d9; + background: #fff; + border-radius: 0 4px 4px 0; +} +.ant-input-number-handler-down { + border-top: 1px solid #d9d9d9; +} +.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner, +.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner { + color: rgba(0, 0, 0, 0.25); +} +.ant-input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-input-group { + color: rgba(0, 0, 0, 0.65); + border-collapse: separate; + border-spacing: 0; +} +.ant-input-group-addon:not(:first-child):not(:last-child), +.ant-input-group-wrap:not(:first-child):not(:last-child), +.ant-input-group > .ant-input:not(:first-child):not(:last-child) { + border-radius: 0; +} +.ant-input-group .ant-input:focus { + border-right-width: 1px; +} +.ant-input-group .ant-input:hover { + border-right-width: 1px; +} +.ant-input-group-addon { + color: rgba(0, 0, 0, 0.65); + background-color: #fafafa; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-input-group-addon .ant-select .ant-select-selection { + background-color: inherit; + border: 1px solid transparent; + box-shadow: none; +} +.ant-input-group-addon .ant-select-open .ant-select-selection, +.ant-input-group-addon .ant-select-focused .ant-select-selection { + color: @primary-color; +} +.ant-input-group > .ant-input:first-child, +.ant-input-group-addon:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group > .ant-input:first-child .ant-select .ant-select-selection, +.ant-input-group-addon:first-child .ant-select .ant-select-selection { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.ant-input-group-addon:first-child { + border-right: 0; +} +.ant-input-group-addon:last-child { + border-left: 0; +} +.ant-input-group > .ant-input:last-child, +.ant-input-group-addon:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group > .ant-input:last-child .ant-select .ant-select-selection, +.ant-input-group-addon:last-child .ant-select .ant-select-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child), +.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child), +.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) { + border-right-width: 1px; + border-right-color: transparent; +} +.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover, +.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover, +.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus, +.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus, +.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > * { + border-radius: 0; + border-right-width: 0; +} +.ant-input-group.ant-input-group-compact > span:not(:last-child) > .ant-input { + border-right-width: 0; +} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input { + border-radius: 0; + border-right-width: 1px; + border-right-color: transparent; +} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover, +.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus, +.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > *:first-child, +.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ant-input-group.ant-input-group-compact > *:last-child, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-right-width: 1px; + border-right-color: #d9d9d9; +} +.ant-input-group.ant-input-group-compact > *:last-child:hover, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:hover, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:hover, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:hover, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > *:last-child:focus, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:focus, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:focus, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:focus, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-group.ant-input-group-compact > *:last-child:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:focus .ant-cascader-input, +.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:focus .ant-cascader-input { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-input-affix-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-input-affix-wrapper .ant-input-prefix, +.ant-input-affix-wrapper .ant-input-suffix { + color: rgba(0, 0, 0, 0.65); +} +.ant-input-search-icon { + color: rgba(0, 0, 0, 0.45); +} +.ant-input-search-icon:hover { + color: #333; +} +.ant-input-search > .ant-input-suffix > .ant-input-search-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.ant-layout { + background: #f0f2f5; +} +.ant-layout-header { + background: #001529; +} +.ant-layout-footer { + background: #f0f2f5; + color: rgba(0, 0, 0, 0.65); +} +.ant-layout-sider { + background: #001529; +} +.ant-layout-sider-trigger { + color: #fff; + background: #002140; +} +.ant-layout-sider-zero-width-trigger { + background: #001529; + color: #fff; + border-radius: 0 4px 4px 0; +} +.ant-layout-sider-zero-width-trigger:hover { + background: #192c3e; +} +.ant-layout-sider-light { + background: #fff; +} +.ant-layout-sider-light .ant-layout-sider-trigger { + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-layout-sider-light .ant-layout-sider-zero-width-trigger { + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-list { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-empty-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-item-meta-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-item-meta-title > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-item-meta-title > a:hover { + color: @primary-color; +} +.ant-list-item-meta-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-item-action > li { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-item-action-split { + background-color: #e8e8e8; +} +.ant-list-empty { + color: rgba(0, 0, 0, 0.45); +} +.ant-list-split .ant-list-item { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-split .ant-list-item:last-child { + border-bottom: none; +} +.ant-list-split .ant-list-header { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-something-after-last-item .ant-spin-container > .ant-list-item:last-child { + border-bottom: 1px solid #e8e8e8; +} +.ant-list-vertical .ant-list-item-meta-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-list-vertical .ant-list-item-content { + color: rgba(0, 0, 0, 0.65); +} +.ant-list-grid .ant-list-item { + border-bottom: none; +} +.ant-list-bordered { + border-radius: 4px; + border: 1px solid #d9d9d9; +} +.ant-list-bordered .ant-list-item { + border-bottom: 1px solid #e8e8e8; +} +.ant-mention-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-mention-wrapper .ant-mention-editor { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-mention-wrapper .ant-mention-editor::-moz-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-mention-wrapper .ant-mention-editor:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-mention-wrapper .ant-mention-editor:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-mention-wrapper .ant-mention-editor-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-wrapper .ant-mention-editor-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-mention-wrapper.ant-mention-active:not(.disabled) .ant-mention-editor { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-mention-wrapper.disabled .ant-mention-editor { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-wrapper.disabled .ant-mention-editor:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-mention-wrapper .public-DraftEditorPlaceholder-root .public-DraftEditorPlaceholder-inner { + color: #bfbfbf; +} +.ant-mention-dropdown { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + border-radius: 4px; +} +.ant-mention-dropdown-notfound.ant-mention-dropdown-item { + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-dropdown-notfound.ant-mention-dropdown-item .anticon-loading { + color: @primary-color; +} +.ant-mention-dropdown-item { + color: rgba(0, 0, 0, 0.65); +} +.ant-mention-dropdown-item:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-mention-dropdown-item.focus, +.ant-mention-dropdown-item-active { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-mention-dropdown-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-mention-dropdown-item-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-mention-dropdown-item-selected, +.ant-mention-dropdown-item-selected:hover { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.65); +} +.ant-mention-dropdown-item-divider { + background-color: #e8e8e8; +} +.ant-menu { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + color: rgba(0, 0, 0, 0.65); + background: #fff; +} +.ant-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-menu-item:active, +.ant-menu-submenu-title:active { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-menu-item > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-menu-item > a:hover { + color: @primary-color; +} +.ant-menu-item > a:before { + background-color: transparent; +} +.ant-menu-item-divider { + background-color: #e8e8e8; +} +.ant-menu-item:hover, +.ant-menu-item-active, +.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, +.ant-menu-submenu-active, +.ant-menu-submenu-title:hover { + color: @primary-color; +} +.ant-menu-horizontal > .ant-menu-item:hover, +.ant-menu-horizontal > .ant-menu-item-active, +.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover { + background-color: transparent; +} +.ant-menu-item-selected { + color: @primary-color; +} +.ant-menu-item-selected > a, +.ant-menu-item-selected > a:hover { + color: @primary-color; +} +.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-menu-inline, +.ant-menu-vertical, +.ant-menu-vertical-left { + border-right: 1px solid #e8e8e8; +} +.ant-menu-vertical-right { + border-left: 1px solid #e8e8e8; +} +.ant-menu-vertical.ant-menu-sub, +.ant-menu-vertical-left.ant-menu-sub, +.ant-menu-vertical-right.ant-menu-sub { + border-right: 0; +} +.ant-menu-vertical.ant-menu-sub .ant-menu-item, +.ant-menu-vertical-left.ant-menu-sub .ant-menu-item, +.ant-menu-vertical-right.ant-menu-sub .ant-menu-item { + border-right: 0; +} +.ant-menu-vertical.ant-menu-sub .ant-menu-item:after, +.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after, +.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after { + border-right: 0; +} +.ant-menu > .ant-menu-item-divider { + background-color: #e8e8e8; +} +.ant-menu-submenu-popup { + border-radius: 4px; +} +.ant-menu-submenu > .ant-menu { + background-color: #fff; + border-radius: 4px; +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after { + background: #fff; + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65)); + border-radius: 2px; +} +.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, +.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, +.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before { + background: linear-gradient(to right, @primary-color, @primary-color); +} +.ant-menu-vertical .ant-menu-submenu-selected, +.ant-menu-vertical-left .ant-menu-submenu-selected, +.ant-menu-vertical-right .ant-menu-submenu-selected { + color: @primary-color; +} +.ant-menu-vertical .ant-menu-submenu-selected > a, +.ant-menu-vertical-left .ant-menu-submenu-selected > a, +.ant-menu-vertical-right .ant-menu-submenu-selected > a { + color: @primary-color; +} +.ant-menu-horizontal { + border: 0; + border-bottom: 1px solid #e8e8e8; + box-shadow: none; +} +.ant-menu-horizontal > .ant-menu-item, +.ant-menu-horizontal > .ant-menu-submenu { + border-bottom: 2px solid transparent; +} +.ant-menu-horizontal > .ant-menu-item:hover, +.ant-menu-horizontal > .ant-menu-submenu:hover, +.ant-menu-horizontal > .ant-menu-item-active, +.ant-menu-horizontal > .ant-menu-submenu-active, +.ant-menu-horizontal > .ant-menu-item-open, +.ant-menu-horizontal > .ant-menu-submenu-open, +.ant-menu-horizontal > .ant-menu-item-selected, +.ant-menu-horizontal > .ant-menu-submenu-selected { + border-bottom: 2px solid @primary-color; + color: @primary-color; +} +.ant-menu-horizontal > .ant-menu-item > a { + color: rgba(0, 0, 0, 0.65); +} +.ant-menu-horizontal > .ant-menu-item > a:hover { + color: @primary-color; +} +.ant-menu-horizontal > .ant-menu-item-selected > a { + color: @primary-color; +} +.ant-menu-vertical .ant-menu-item:after, +.ant-menu-vertical-left .ant-menu-item:after, +.ant-menu-vertical-right .ant-menu-item:after, +.ant-menu-inline .ant-menu-item:after { + border-right: 3px solid @primary-color; +} +.ant-menu-inline-collapsed-tooltip a { + color: rgba(255, 255, 255, 0.85); +} +.ant-menu-root.ant-menu-vertical, +.ant-menu-root.ant-menu-vertical-left, +.ant-menu-root.ant-menu-vertical-right, +.ant-menu-root.ant-menu-inline { + box-shadow: none; +} +.ant-menu-sub.ant-menu-inline { + border: 0; + box-shadow: none; + border-radius: 0; +} +.ant-menu-item-disabled, +.ant-menu-submenu-disabled { + color: rgba(0, 0, 0, 0.25) !important; + background: none; + border-color: transparent !important; +} +.ant-menu-item-disabled > a, +.ant-menu-submenu-disabled > a { + color: rgba(0, 0, 0, 0.25) !important; +} +.ant-menu-item-disabled > .ant-menu-submenu-title, +.ant-menu-submenu-disabled > .ant-menu-submenu-title { + color: rgba(0, 0, 0, 0.25) !important; +} +.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after { + background: rgba(0, 0, 0, 0.25) !important; +} +.ant-menu-dark, +.ant-menu-dark .ant-menu-sub { + color: rgba(255, 255, 255, 0.65); + background: #001529; +} +.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before { + background: #fff; +} +.ant-menu-dark.ant-menu-submenu-popup { + background: transparent; +} +.ant-menu-dark .ant-menu-inline.ant-menu-sub { + background: #000c17; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset; +} +.ant-menu-dark.ant-menu-horizontal { + border-bottom: 0; +} +.ant-menu-dark.ant-menu-horizontal > .ant-menu-item, +.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu { + border-color: #001529; + border-bottom: 0; +} +.ant-menu-dark .ant-menu-item, +.ant-menu-dark .ant-menu-item-group-title, +.ant-menu-dark .ant-menu-item > a { + color: rgba(255, 255, 255, 0.65); +} +.ant-menu-dark.ant-menu-inline, +.ant-menu-dark.ant-menu-vertical, +.ant-menu-dark.ant-menu-vertical-left, +.ant-menu-dark.ant-menu-vertical-right { + border-right: 0; +} +.ant-menu-dark.ant-menu-inline .ant-menu-item, +.ant-menu-dark.ant-menu-vertical .ant-menu-item, +.ant-menu-dark.ant-menu-vertical-left .ant-menu-item, +.ant-menu-dark.ant-menu-vertical-right .ant-menu-item { + border-right: 0; +} +.ant-menu-dark.ant-menu-inline .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after, +.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after { + border-right: 0; +} +.ant-menu-dark .ant-menu-item:hover, +.ant-menu-dark .ant-menu-item-active, +.ant-menu-dark .ant-menu-submenu-active, +.ant-menu-dark .ant-menu-submenu-open, +.ant-menu-dark .ant-menu-submenu-selected, +.ant-menu-dark .ant-menu-submenu-title:hover { + background-color: transparent; + color: #fff; +} +.ant-menu-dark .ant-menu-item:hover > a, +.ant-menu-dark .ant-menu-item-active > a, +.ant-menu-dark .ant-menu-submenu-active > a, +.ant-menu-dark .ant-menu-submenu-open > a, +.ant-menu-dark .ant-menu-submenu-selected > a, +.ant-menu-dark .ant-menu-submenu-title:hover > a { + color: #fff; +} +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before { + background: #fff; +} +.ant-menu-dark .ant-menu-item-selected { + border-right: 0; + color: #fff; +} +.ant-menu-dark .ant-menu-item-selected:after { + border-right: 0; +} +.ant-menu-dark .ant-menu-item-selected > a, +.ant-menu-dark .ant-menu-item-selected > a:hover { + color: #fff; +} +.ant-menu.ant-menu-dark .ant-menu-item-selected, +.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected { + background-color: @primary-color; +} +.ant-menu-dark .ant-menu-item-disabled, +.ant-menu-dark .ant-menu-submenu-disabled, +.ant-menu-dark .ant-menu-item-disabled > a, +.ant-menu-dark .ant-menu-submenu-disabled > a { + color: rgba(255, 255, 255, 0.35) !important; +} +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title, +.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title { + color: rgba(255, 255, 255, 0.35) !important; +} +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, +.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, +.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after { + background: rgba(255, 255, 255, 0.35) !important; +} +.ant-message { + color: rgba(0, 0, 0, 0.65); +} +.ant-message-notice-content { + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background: #fff; +} +.ant-message-success .anticon { + color: #52c41a; +} +.ant-message-error .anticon { + color: #f5222d; +} +.ant-message-warning .anticon { + color: #faad14; +} +.ant-message-info .anticon, +.ant-message-loading .anticon { + color: @primary-color; +} +.ant-modal { + color: rgba(0, 0, 0, 0.65); +} +.ant-modal-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-modal-content { + background-color: #fff; + border: 0; + border-radius: 4px; + background-clip: padding-box; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} +.ant-modal-close { + border: 0; + background: transparent; + color: rgba(0, 0, 0, 0.45); +} +.ant-modal-close:focus, +.ant-modal-close:hover { + color: #444; +} +.ant-modal-header { + border-radius: 4px 4px 0 0; + background: #fff; + color: rgba(0, 0, 0, 0.65); + border-bottom: 1px solid #e8e8e8; +} +.ant-modal-footer { + border-top: 1px solid #e8e8e8; + border-radius: 0 0 4px 4px; +} +.ant-modal-mask { + background-color: rgba(0, 0, 0, 0.65); +} +.ant-confirm-body .ant-confirm-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-confirm-body .ant-confirm-content { + color: rgba(0, 0, 0, 0.65); +} +.ant-confirm-error .ant-confirm-body > .anticon { + color: #f5222d; +} +.ant-confirm-warning .ant-confirm-body > .anticon, +.ant-confirm-confirm .ant-confirm-body > .anticon { + color: #faad14; +} +.ant-confirm-info .ant-confirm-body > .anticon { + color: @primary-color; +} +.ant-confirm-success .ant-confirm-body > .anticon { + color: #52c41a; +} +.ant-notification { + color: rgba(0, 0, 0, 0.65); +} +.ant-notification-notice { + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background: #fff; +} +.ant-notification-notice-message { + color: rgba(0, 0, 0, 0.85); +} +.ant-notification-notice-message-single-line-auto-margin { + background-color: transparent; +} +.ant-notification-notice-icon-success { + color: #52c41a; +} +.ant-notification-notice-icon-info { + color: @primary-color; +} +.ant-notification-notice-icon-warning { + color: #faad14; +} +.ant-notification-notice-icon-error { + color: #f5222d; +} +.ant-notification-notice-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-notification-notice-close:hover { + color: rgba(0, 0, 0, 0.67); +} +.ant-pagination { + color: rgba(0, 0, 0, 0.65); +} +.ant-pagination-item { + border-radius: 4px; + border: 1px solid #d9d9d9; + background-color: #fff; +} +.ant-pagination-item a { + color: rgba(0, 0, 0, 0.65); +} +.ant-pagination-item:focus, +.ant-pagination-item:hover { + border-color: @primary-color; +} +.ant-pagination-item:focus a, +.ant-pagination-item:hover a { + color: @primary-color; +} +.ant-pagination-item-active { + border-color: @primary-color; +} +.ant-pagination-item-active a { + color: @primary-color; +} +.ant-pagination-item-active:focus, +.ant-pagination-item-active:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-pagination-item-active:focus a, +.ant-pagination-item-active:hover a { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, +.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { + color: @primary-color; +} +.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis, +.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis { + color: rgba(0, 0, 0, 0.25); +} +.ant-pagination-prev, +.ant-pagination-next, +.ant-pagination-jump-prev, +.ant-pagination-jump-next { + color: rgba(0, 0, 0, 0.65); + border-radius: 4px; +} +.ant-pagination-prev a, +.ant-pagination-next a { + color: rgba(0, 0, 0, 0.65); +} +.ant-pagination-prev:hover a, +.ant-pagination-next:hover a { + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-pagination-prev .ant-pagination-item-link, +.ant-pagination-next .ant-pagination-item-link { + border: 1px solid #d9d9d9; + background-color: #fff; + border-radius: 4px; +} +.ant-pagination-prev:focus .ant-pagination-item-link, +.ant-pagination-next:focus .ant-pagination-item-link, +.ant-pagination-prev:hover .ant-pagination-item-link, +.ant-pagination-next:hover .ant-pagination-item-link { + border-color: @primary-color; + color: @primary-color; +} +.ant-pagination-disabled a, +.ant-pagination-disabled:hover a, +.ant-pagination-disabled:focus a, +.ant-pagination-disabled .ant-pagination-item-link, +.ant-pagination-disabled:hover .ant-pagination-item-link, +.ant-pagination-disabled:focus .ant-pagination-item-link { + border-color: #d9d9d9; + color: rgba(0, 0, 0, 0.25); +} +.ant-pagination-options-quick-jumper input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-pagination-options-quick-jumper input::-moz-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-pagination-options-quick-jumper input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-pagination-options-quick-jumper input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-pagination-options-quick-jumper input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-pagination-options-quick-jumper input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link, +.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link { + border: 0; +} +.ant-pagination-simple .ant-pagination-simple-pager input { + background-color: #fff; + border-radius: 4px; + border: 1px solid #d9d9d9; +} +.ant-pagination-simple .ant-pagination-simple-pager input:hover { + border-color: @primary-color; +} +.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) { + background: transparent; + border-color: transparent; +} +.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link, +.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link { + border-color: transparent; + background: transparent; +} +.ant-popover { + color: rgba(0, 0, 0, 0.65); +} +.ant-popover:after { + background: rgba(255, 255, 255, 0.01); +} +.ant-popover-inner { + background-color: #fff; + background-clip: padding-box; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-popover-title { + border-bottom: 1px solid #e8e8e8; + color: rgba(0, 0, 0, 0.85); +} +.ant-popover-inner-content { + color: rgba(0, 0, 0, 0.65); +} +.ant-popover-message { + color: rgba(0, 0, 0, 0.65); +} +.ant-popover-message > .anticon { + color: #faad14; +} +.ant-popover-arrow { + background: #fff; + border-color: transparent; + border-style: solid; +} +.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow { + box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); +} +.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow { + box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07); +} +.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow { + box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06); +} +.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow, +.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow { + box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07); +} +.ant-progress { + color: rgba(0, 0, 0, 0.65); +} +.ant-progress-inner { + background-color: #f5f5f5; + border-radius: 100px; +} +.ant-progress-success-bg, +.ant-progress-bg { + background-color: @primary-color; +} +.ant-progress-success-bg { + background-color: #52c41a; +} +.ant-progress-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-progress-status-active .ant-progress-bg:before { + background: #fff; + border-radius: 10px; +} +.ant-progress-status-exception .ant-progress-bg { + background-color: #f5222d; +} +.ant-progress-status-exception .ant-progress-text { + color: #f5222d; +} +.ant-progress-status-success .ant-progress-bg { + background-color: #52c41a; +} +.ant-progress-status-success .ant-progress-text { + color: #52c41a; +} +.ant-progress-circle .ant-progress-inner { + background-color: transparent; +} +.ant-progress-circle .ant-progress-text { + color: rgba(0, 0, 0, 0.65); +} +.ant-progress-circle.ant-progress-status-exception .ant-progress-text { + color: #f5222d; +} +.ant-progress-circle.ant-progress-status-success .ant-progress-text { + color: #52c41a; +} +.ant-radio-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio-wrapper:hover .ant-radio .ant-radio-inner, +.ant-radio:hover .ant-radio-inner, +.ant-radio-focused .ant-radio-inner { + border-color: @primary-color; +} +.ant-radio-checked:after { + border-radius: 50%; + border: 1px solid @primary-color; +} +.ant-radio-inner { + border-width: 1px; + border-style: solid; + border-radius: 100px; + border-color: #d9d9d9; + background-color: #fff; +} +.ant-radio-inner:after { + border-radius: 8px; + border-top: 0; + border-left: 0; + background-color: @primary-color; +} +.ant-radio-checked .ant-radio-inner { + border-color: @primary-color; +} +.ant-radio-disabled .ant-radio-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-radio-disabled .ant-radio-inner:after { + background-color: #ccc; +} +.ant-radio-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper { + color: rgba(0, 0, 0, 0.65); + border: 1px solid #d9d9d9; + border-left: 0; + border-top-width: 1.02px; + background: #fff; +} +.ant-radio-button-wrapper a { + color: rgba(0, 0, 0, 0.65); +} +.ant-radio-button-wrapper:not(:first-child)::before { + background-color: #d9d9d9; +} +.ant-radio-button-wrapper:first-child { + border-radius: 4px 0 0 4px; + border-left: 1px solid #d9d9d9; +} +.ant-radio-button-wrapper:last-child { + border-radius: 0 4px 4px 0; +} +.ant-radio-button-wrapper:first-child:last-child { + border-radius: 4px; +} +.ant-radio-button-wrapper:hover, +.ant-radio-button-wrapper-focused { + color: @primary-color; +} +.ant-radio-button-wrapper-checked { + background: #fff; + border-color: @primary-color; + color: @primary-color; + box-shadow: -1px 0 0 0 @primary-color; +} +.ant-radio-button-wrapper-checked::before { + background-color: @primary-color !important; +} +.ant-radio-button-wrapper-checked:first-child { + border-color: @primary-color; + box-shadow: none !important; +} +.ant-radio-button-wrapper-checked:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: -1px 0 0 0 color(~`colorPalette("@{primary-color}", 5)`); + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-radio-button-wrapper-checked:active { + border-color: color(~`colorPalette("@{primary-color}", 7)`); + box-shadow: -1px 0 0 0 color(~`colorPalette("@{primary-color}", 7)`); + color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { + background: @primary-color; + border-color: @primary-color; + color: #fff; +} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + background: color(~`colorPalette("@{primary-color}", 5)`); + color: #fff; +} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active { + border-color: color(~`colorPalette("@{primary-color}", 7)`); + background: color(~`colorPalette("@{primary-color}", 7)`); + color: #fff; +} +.ant-radio-button-wrapper-disabled { + border-color: #d9d9d9; + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper-disabled:first-child, +.ant-radio-button-wrapper-disabled:hover { + border-color: #d9d9d9; + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-radio-button-wrapper-disabled:first-child { + border-left-color: #d9d9d9; +} +.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked { + color: #fff; + background-color: #e6e6e6; + border-color: #d9d9d9; + box-shadow: none; +} +.ant-rate { + color: rgba(0, 0, 0, 0.65); + color: #fadb14; +} +.ant-rate-star { + color: inherit; +} +.ant-rate-star-first, +.ant-rate-star-second { + color: #e8e8e8; +} +.ant-rate-star-half .ant-rate-star-first, +.ant-rate-star-full .ant-rate-star-second { + color: inherit; +} +.ant-select { + color: rgba(0, 0, 0, 0.65); +} +.ant-select > ul > li > a { + background-color: #fff; +} +.ant-select-arrow { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-selection { + background-color: #fff; + border-radius: 4px; + border: 1px solid #d9d9d9; + border-top-width: 1.02px; +} +.ant-select-selection:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-select-focused .ant-select-selection, +.ant-select-selection:focus, +.ant-select-selection:active { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-select-selection__clear { + background: #fff; + color: rgba(0, 0, 0, 0.25); +} +.ant-select-selection__clear:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-select-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-disabled .ant-select-selection { + background: #f5f5f5; +} +.ant-select-disabled .ant-select-selection:hover, +.ant-select-disabled .ant-select-selection:focus, +.ant-select-disabled .ant-select-selection:active { + border-color: #d9d9d9; + box-shadow: none; +} +.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice { + background: #f5f5f5; + color: #aaa; +} +.ant-select-disabled .ant-select-selection__choice__remove { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-disabled .ant-select-selection__choice__remove:hover { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-selection__placeholder, +.ant-select-search__field__placeholder { + color: #bfbfbf; +} +.ant-select-search--inline .ant-select-search__field { + border-width: 0; + background: transparent; + border-radius: 4px; +} +.ant-select-selection--multiple .ant-select-selection__choice { + color: rgba(0, 0, 0, 0.65); + background-color: #fafafa; + border: 1px solid #e8e8e8; + border-radius: 2px; +} +.ant-select-selection--multiple .ant-select-selection__choice__remove { + color: rgba(0, 0, 0, 0.45); +} +.ant-select-selection--multiple .ant-select-selection__choice__remove:hover { + color: #404040; +} +.ant-select-open .ant-select-selection { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-select-combobox .ant-select-search__field { + box-shadow: none; +} +.ant-select-dropdown { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + border-radius: 4px; +} +.ant-select-dropdown-menu-item-group-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:first-child:not(:last-child), +.ant-select-dropdown-menu-item-group:not(:last-child) .ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:last-child { + border-radius: 0; +} +.ant-select-dropdown-menu-item { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-dropdown-menu-item:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-select-dropdown-menu-item:first-child { + border-radius: 4px 4px 0 0; +} +.ant-select-dropdown-menu-item:last-child { + border-radius: 0 0 4px 4px; +} +.ant-select-dropdown-menu-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-dropdown-menu-item-disabled:hover { + color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-select-dropdown-menu-item-selected, +.ant-select-dropdown-menu-item-selected:hover { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.65); +} +.ant-select-dropdown-menu-item-active { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-select-dropdown-menu-item-divider { + background-color: #e8e8e8; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item .ant-select-selected-icon { + color: transparent; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover .ant-select-selected-icon { + color: #ddd; +} +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon, +.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon { + color: @primary-color; +} +.ant-skeleton-header .ant-skeleton-avatar { + background: #f2f2f2; +} +.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle { + border-radius: 50%; +} +.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle { + border-radius: 50%; +} +.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle { + border-radius: 50%; +} +.ant-skeleton-content .ant-skeleton-title { + background: #f2f2f2; +} +.ant-skeleton-content .ant-skeleton-paragraph > li { + background: #f2f2f2; +} +.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, +.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li { + background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); + background-size: 400% 100%; +} +.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar { + background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); + background-size: 400% 100%; +} +.ant-slider { + color: rgba(0, 0, 0, 0.65); +} +.ant-slider-rail { + border-radius: 2px; + background-color: #f5f5f5; +} +.ant-slider-track { + border-radius: 4px; + background-color: color(~`colorPalette("@{primary-color}", 3)`); +} +.ant-slider-handle { + border-radius: 50%; + border: solid 2px color(~`colorPalette("@{primary-color}", 3)`); + background-color: #fff; +} +.ant-slider-handle:focus { + border-color: #46a6ff; + box-shadow: 0 0 0 5px #8cc8ff; +} +.ant-slider-handle.ant-tooltip-open { + border-color: @primary-color; +} +.ant-slider:hover .ant-slider-rail { + background-color: #e1e1e1; +} +.ant-slider:hover .ant-slider-track { + background-color: color(~`colorPalette("@{primary-color}", 4)`); +} +.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) { + border-color: color(~`colorPalette("@{primary-color}", 4)`); +} +.ant-slider-mark-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-slider-mark-text-active { + color: rgba(0, 0, 0, 0.65); +} +.ant-slider-step { + background: transparent; +} +.ant-slider-dot { + border: 2px solid #e8e8e8; + background-color: #fff; + border-radius: 50%; +} +.ant-slider-dot-active { + border-color: #8cc8ff; +} +.ant-slider-disabled .ant-slider-track { + background-color: rgba(0, 0, 0, 0.25) !important; +} +.ant-slider-disabled .ant-slider-handle, +.ant-slider-disabled .ant-slider-dot { + border-color: rgba(0, 0, 0, 0.25) !important; + background-color: #fff; + box-shadow: none; +} +.ant-spin { + color: rgba(0, 0, 0, 0.65); + color: @primary-color; +} +.ant-spin-blur:after { + background: #fff; +} +.ant-spin-tip { + color: rgba(0, 0, 0, 0.45); +} +.ant-spin-dot i { + border-radius: 100%; + background-color: @primary-color; +} +.ant-steps { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-icon { + border: 1px solid rgba(0, 0, 0, 0.25); + border-radius: 32px; +} +.ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-item-tail:after { + background: #e8e8e8; + border-radius: 1px; +} +.ant-steps-item-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-title:after { + background: #e8e8e8; +} +.ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait .ant-steps-item-icon { + border-color: rgba(0, 0, 0, 0.25); + background-color: #fff; +} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: rgba(0, 0, 0, 0.25); +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-wait > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item-process .ant-steps-item-icon { + border-color: @primary-color; + background-color: #fff; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: @primary-color; +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.85); +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-process > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item-process .ant-steps-item-icon { + background: @primary-color; +} +.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: #fff; +} +.ant-steps-item-finish .ant-steps-item-icon { + border-color: @primary-color; + background-color: #fff; +} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: @primary-color; +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title { + color: rgba(0, 0, 0, 0.65); +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: @primary-color; +} +.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-item-finish > .ant-steps-item-tail:after { + background-color: @primary-color; +} +.ant-steps-item-error .ant-steps-item-icon { + border-color: #f5222d; + background-color: #fff; +} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon { + color: #f5222d; +} +.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { + background: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title { + color: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title:after { + background-color: #e8e8e8; +} +.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-description { + color: #f5222d; +} +.ant-steps-item-error > .ant-steps-item-tail:after { + background-color: #e8e8e8; +} +.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after { + background: #f5222d; +} +.ant-steps-item-custom .ant-steps-item-icon { + background: none; + border: 0; +} +.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { + color: @primary-color; +} +.ant-steps-small .ant-steps-item-icon { + border-radius: 24px; +} +.ant-steps-small .ant-steps-item-description { + color: rgba(0, 0, 0, 0.45); +} +.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon { + border-radius: 0; + border: 0; + background: none; +} +.ant-steps-dot .ant-steps-item-icon { + border: 0; + background: transparent; +} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot { + border-radius: 100px; +} +.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after { + background: rgba(0, 0, 0, 0.001); +} +.ant-switch { + color: rgba(0, 0, 0, 0.65); + border-radius: 100px; + border: 1px solid transparent; + background-color: rgba(0, 0, 0, 0.25); +} +.ant-switch-inner { + color: #fff; +} +.ant-switch-loading-icon, +.ant-switch:after { + border-radius: 18px; + background-color: #fff; +} +.ant-switch:after { + box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2); +} +.ant-switch-loading-icon { + background: transparent; +} +.ant-switch-loading .ant-switch-loading-icon { + color: rgba(0, 0, 0, 0.65); +} +.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon { + color: @primary-color; +} +.ant-switch:focus { + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); +} +.ant-switch:focus:hover { + box-shadow: none; +} +.ant-switch-checked { + background-color: @primary-color; +} +.ant-table { + color: rgba(0, 0, 0, 0.65); +} +.ant-table table { + border-collapse: collapse; + border-radius: 4px 4px 0 0; +} +.ant-table-thead > tr > th { + background: #fafafa; + color: rgba(0, 0, 0, 0.85); + border-bottom: 1px solid #e8e8e8; +} +.ant-table-thead > tr > th .anticon-filter, +.ant-table-thead > tr > th .ant-table-filter-icon { + color: #bfbfbf; +} +.ant-table-thead > tr > th .ant-table-filter-selected.anticon-filter { + color: @primary-color; +} +.ant-table-thead > tr > th .ant-table-column-sorter { + color: #bfbfbf; +} +.ant-table-thead > tr > th .ant-table-column-sorter-up.on, +.ant-table-thead > tr > th .ant-table-column-sorter-down.on { + color: @primary-color; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover { + background: #f5f5f5; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter, +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon { + background: #f5f5f5; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter:hover, +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon:hover { + color: rgba(0, 0, 0, 0.45); + background: #ebebeb; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter:active, +.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon:active { + color: rgba(0, 0, 0, 0.65); +} +.ant-table-thead > tr > th.ant-table-column-has-actions .anticon-filter.ant-table-filter-open, +.ant-table-thead > tr > th.ant-table-column-has-actions .ant-table-filter-icon.ant-table-filter-open { + color: rgba(0, 0, 0, 0.45); + background: #ebebeb; +} +.ant-table-thead > tr > th.ant-table-column-has-actions:active .ant-table-column-sorter-up:not(.on), +.ant-table-thead > tr > th.ant-table-column-has-actions:active .ant-table-column-sorter-down:not(.on) { + color: rgba(0, 0, 0, 0.45); +} +.ant-table-thead > tr > th .ant-table-column-sorters:before { + background: transparent; +} +.ant-table-thead > tr > th .ant-table-column-sorters:hover:before { + background: rgba(0, 0, 0, 0.04); +} +.ant-table-thead > tr:first-child > th:first-child { + border-top-left-radius: 4px; +} +.ant-table-thead > tr:first-child > th:last-child { + border-top-right-radius: 4px; +} +.ant-table-thead > tr:not(:last-child) > th[colspan] { + border-bottom: 0; +} +.ant-table-tbody > tr > td { + border-bottom: 1px solid #e8e8e8; +} +.ant-table-thead > tr.ant-table-row-hover > td, +.ant-table-tbody > tr.ant-table-row-hover > td, +.ant-table-thead > tr:hover > td, +.ant-table-tbody > tr:hover > td { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-table-thead > tr:hover { + background: none; +} +.ant-table-footer { + background: #fafafa; + border-radius: 0 0 4px 4px; + border-top: 1px solid #e8e8e8; +} +.ant-table-footer:before { + background: #fafafa; +} +.ant-table.ant-table-bordered .ant-table-footer { + border: 1px solid #e8e8e8; +} +.ant-table-title { + border-radius: 4px 4px 0 0; +} +.ant-table.ant-table-bordered .ant-table-title { + border: 1px solid #e8e8e8; +} +.ant-table-title + .ant-table-content { + border-radius: 4px 4px 0 0; +} +.ant-table-bordered .ant-table-title + .ant-table-content, +.ant-table-bordered .ant-table-title + .ant-table-content table, +.ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th { + border-radius: 0; +} +.ant-table-without-column-header .ant-table-title + .ant-table-content, +.ant-table-without-column-header table { + border-radius: 0; +} +.ant-table-tbody > tr.ant-table-row-selected td { + background: #fafafa; +} +.ant-table-thead > tr > th.ant-table-column-sort { + background: #f5f5f5; +} +.ant-table-tbody > tr > td.ant-table-column-sort { + background: rgba(0, 0, 0, 0.01); +} +.ant-table-header { + background: #fafafa; +} +.ant-table-header table { + border-radius: 4px 4px 0 0; +} +.ant-table-loading .ant-table-body { + background: #fff; +} +.ant-table-bordered .ant-table-header > table, +.ant-table-bordered .ant-table-body > table, +.ant-table-bordered .ant-table-fixed-left table, +.ant-table-bordered .ant-table-fixed-right table { + border: 1px solid #e8e8e8; + border-right: 0; + border-bottom: 0; +} +.ant-table-bordered.ant-table-empty .ant-table-placeholder { + border-left: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-header > table { + border-bottom: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-body > table { + border-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table { + border-top: 0; +} +.ant-table-bordered.ant-table-fixed-header .ant-table-placeholder { + border: 0; +} +.ant-table-bordered .ant-table-thead > tr:not(:last-child) > th { + border-bottom: 1px solid #e8e8e8; +} +.ant-table-bordered .ant-table-thead > tr > th, +.ant-table-bordered .ant-table-tbody > tr > td { + border-right: 1px solid #e8e8e8; +} +.ant-table-placeholder { + background: #fff; + border-bottom: 1px solid #e8e8e8; + color: rgba(0, 0, 0, 0.45); +} +.ant-table-filter-dropdown { + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-filter-dropdown .ant-dropdown-menu { + border: 0; + box-shadow: none; + border-radius: 4px 4px 0 0; +} +.ant-table-filter-dropdown .ant-dropdown-menu-sub { + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after { + color: @primary-color; +} +.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child, +.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title { + border-radius: 0; +} +.ant-table-filter-dropdown-btns { + border-top: 1px solid #e8e8e8; +} +.ant-table-filter-dropdown-link { + color: @primary-color; +} +.ant-table-filter-dropdown-link:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-table-filter-dropdown-link:active { + color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-table-selection .anticon-down { + color: #bfbfbf; +} +.ant-table-selection-menu { + background: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-table-selection-menu .ant-action-down { + color: #bfbfbf; +} +.ant-table-selection-down:hover .anticon-down { + color: #666; +} +.ant-table-row-expand-icon { + border: 1px solid #e8e8e8; + background: #fff; +} +tr.ant-table-expanded-row, +tr.ant-table-expanded-row:hover { + background: #fbfbfb; +} +.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body { + background: #fff; +} +.ant-table-fixed-left, +.ant-table-fixed-right { + border-radius: 0; +} +.ant-table-fixed-left table, +.ant-table-fixed-right table { + background: #fff; +} +.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed, +.ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed { + border-radius: 0; +} +.ant-table-fixed-left { + box-shadow: 6px 0 6px -4px rgba(0, 0, 0, 0.15); +} +.ant-table-fixed-left, +.ant-table-fixed-left table { + border-radius: 4px 0 0 0; +} +.ant-table-fixed-left .ant-table-thead > tr > th:last-child { + border-top-right-radius: 0; +} +.ant-table-fixed-right { + box-shadow: -6px 0 6px -4px rgba(0, 0, 0, 0.15); +} +.ant-table-fixed-right, +.ant-table-fixed-right table { + border-radius: 0 4px 0 0; +} +.ant-table-fixed-right .ant-table-expanded-row { + color: transparent; +} +.ant-table-fixed-right .ant-table-thead > tr > th:first-child { + border-top-left-radius: 0; +} +.ant-table.ant-table-scroll-position-left .ant-table-fixed-left { + box-shadow: none; +} +.ant-table.ant-table-scroll-position-right .ant-table-fixed-right { + box-shadow: none; +} +.ant-table-small { + border: 1px solid #e8e8e8; + border-radius: 4px; +} +.ant-table-small > .ant-table-title { + border-bottom: 1px solid #e8e8e8; +} +.ant-table-small > .ant-table-content > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-body > table, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table { + border: 0; +} +.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, +.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th { + background: #fff; + border-bottom: 1px solid #e8e8e8; +} +.ant-table-small > .ant-table-content .ant-table-header { + background: #fff; +} +.ant-table-small > .ant-table-content .ant-table-placeholder, +.ant-table-small > .ant-table-content .ant-table-row:last-child td { + border-bottom: 0; +} +.ant-table-small.ant-table-bordered { + border-right: 0; +} +.ant-table-small.ant-table-bordered .ant-table-title { + border: 0; + border-bottom: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-content { + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-footer { + border: 0; + border-top: 1px solid #e8e8e8; + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-placeholder { + border-left: 0; + border-bottom: 0; +} +.ant-table-small.ant-table-bordered .ant-table-thead > tr > th:last-child, +.ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child { + border-right: none; +} +.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-thead > tr > th:last-child, +.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-tbody > tr > td:last-child { + border-right: 1px solid #e8e8e8; +} +.ant-table-small.ant-table-bordered .ant-table-fixed-right { + border-right: 1px solid #e8e8e8; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab { + border: 1px solid #e8e8e8; + border-bottom: 0; + border-radius: 4px 4px 0 0; + background: #fafafa; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active { + background: #fff; + border-color: @primary-color !important; + color: @primary-color; +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .ant-tabs-close-x { + color: rgba(0, 0, 0, 0.45); +} +.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .ant-tabs-close-x:hover { + color: rgba(0, 0, 0, 0.85); +} +.ant-tabs-extra-content .ant-tabs-new-tab { + border-radius: 2px; + border: 1px solid #e8e8e8; + color: rgba(0, 0, 0, 0.65); +} +.ant-tabs-extra-content .ant-tabs-new-tab:hover { + color: @primary-color; + border-color: @primary-color; +} +.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab { + border-bottom: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-left > .ant-tabs-bar .ant-tabs-tab { + border-right: 0; + border-radius: 4px 0 0 4px; +} +.ant-tabs-vertical.ant-tabs-card.ant-tabs-right > .ant-tabs-bar .ant-tabs-tab { + border-left: 0; + border-radius: 0 4px 4px 0; +} +.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab { + border-bottom: 1px solid #e8e8e8; + border-top: 0; + border-radius: 0 0 4px 4px; +} +.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab-active { + color: @primary-color; +} +.ant-tabs { + color: rgba(0, 0, 0, 0.65); +} +.ant-tabs-ink-bar { + background-color: @primary-color; +} +.ant-tabs-bar { + border-bottom: 1px solid #e8e8e8; +} +.ant-tabs-bottom .ant-tabs-bar { + border-bottom: none; + border-top: 1px solid #e8e8e8; +} +.ant-tabs-tab-prev, +.ant-tabs-tab-next { + border: 0; + background-color: transparent; + color: rgba(0, 0, 0, 0.45); +} +.ant-tabs-tab-prev:hover, +.ant-tabs-tab-next:hover { + color: rgba(0, 0, 0, 0.65); +} +.ant-tabs-tab-btn-disabled, +.ant-tabs-tab-btn-disabled:hover { + color: rgba(0, 0, 0, 0.25); +} +.ant-tabs-nav .ant-tabs-tab-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-tabs-nav .ant-tabs-tab:hover { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-tabs-nav .ant-tabs-tab:active { + color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-tabs-nav .ant-tabs-tab-active { + color: @primary-color; +} +.ant-tabs-vertical > .ant-tabs-bar { + border-bottom: 0; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar { + border-right: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-left > .ant-tabs-content { + border-left: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-bar { + border-left: 1px solid #e8e8e8; +} +.ant-tabs-vertical.ant-tabs-right > .ant-tabs-content { + border-right: 1px solid #e8e8e8; +} +.ant-tag { + color: rgba(0, 0, 0, 0.65); + border-radius: 4px; + border: 1px solid #d9d9d9; + background: #fafafa; +} +.ant-tag, +.ant-tag a, +.ant-tag a:hover { + color: rgba(0, 0, 0, 0.65); +} +.ant-tag .anticon-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-tag .anticon-close:hover { + color: rgba(0, 0, 0, 0.85); +} +.ant-tag-has-color { + border-color: transparent; +} +.ant-tag-has-color, +.ant-tag-has-color a, +.ant-tag-has-color a:hover, +.ant-tag-has-color .anticon-close, +.ant-tag-has-color .anticon-close:hover { + color: #fff; +} +.ant-tag-checkable { + background-color: transparent; + border-color: transparent; +} +.ant-tag-checkable:not(.ant-tag-checkable-checked):hover { + color: @primary-color; +} +.ant-tag-checkable:active, +.ant-tag-checkable-checked { + color: #fff; +} +.ant-tag-checkable-checked { + background-color: @primary-color; +} +.ant-tag-checkable:active { + background-color: color(~`colorPalette("@{primary-color}", 7)`); +} +.ant-tag-pink { + color: #eb2f96; + background: #fff0f6; + border-color: #ffadd2; +} +.ant-tag-pink-inverse { + background: #eb2f96; + border-color: #eb2f96; + color: #fff; +} +.ant-tag-magenta { + color: #eb2f96; + background: #fff0f6; + border-color: #ffadd2; +} +.ant-tag-magenta-inverse { + background: #eb2f96; + border-color: #eb2f96; + color: #fff; +} +.ant-tag-red { + color: #f5222d; + background: #fff1f0; + border-color: #ffa39e; +} +.ant-tag-red-inverse { + background: #f5222d; + border-color: #f5222d; + color: #fff; +} +.ant-tag-volcano { + color: #fa541c; + background: #fff2e8; + border-color: #ffbb96; +} +.ant-tag-volcano-inverse { + background: #fa541c; + border-color: #fa541c; + color: #fff; +} +.ant-tag-orange { + color: #fa8c16; + background: #fff7e6; + border-color: #ffd591; +} +.ant-tag-orange-inverse { + background: #fa8c16; + border-color: #fa8c16; + color: #fff; +} +.ant-tag-yellow { + color: #fadb14; + background: #feffe6; + border-color: #fffb8f; +} +.ant-tag-yellow-inverse { + background: #fadb14; + border-color: #fadb14; + color: #fff; +} +.ant-tag-gold { + color: #faad14; + background: #fffbe6; + border-color: #ffe58f; +} +.ant-tag-gold-inverse { + background: #faad14; + border-color: #faad14; + color: #fff; +} +.ant-tag-cyan { + color: #13c2c2; + background: #e6fffb; + border-color: #87e8de; +} +.ant-tag-cyan-inverse { + background: #13c2c2; + border-color: #13c2c2; + color: #fff; +} +.ant-tag-lime { + color: #a0d911; + background: #fcffe6; + border-color: #eaff8f; +} +.ant-tag-lime-inverse { + background: #a0d911; + border-color: #a0d911; + color: #fff; +} +.ant-tag-green { + color: #52c41a; + background: #f6ffed; + border-color: #b7eb8f; +} +.ant-tag-green-inverse { + background: #52c41a; + border-color: #52c41a; + color: #fff; +} +.ant-tag-blue { + color: @primary-color; + background: color(~`colorPalette("@{primary-color}", 1)`); + border-color: color(~`colorPalette("@{primary-color}", 3)`); +} +.ant-tag-blue-inverse { + background: @primary-color; + border-color: @primary-color; + color: #fff; +} +.ant-tag-geekblue { + color: #2f54eb; + background: #f0f5ff; + border-color: #adc6ff; +} +.ant-tag-geekblue-inverse { + background: #2f54eb; + border-color: #2f54eb; + color: #fff; +} +.ant-tag-purple { + color: #722ed1; + background: #f9f0ff; + border-color: #d3adf7; +} +.ant-tag-purple-inverse { + background: #722ed1; + border-color: #722ed1; + color: #fff; +} +.ant-time-picker-panel { + color: rgba(0, 0, 0, 0.65); +} +.ant-time-picker-panel-inner { + background-color: #fff; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + background-clip: padding-box; +} +.ant-time-picker-panel-input { + border: 0; +} +.ant-time-picker-panel-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-panel-input-wrap { + border-bottom: 1px solid #e8e8e8; +} +.ant-time-picker-panel-input-invalid { + border-color: red; +} +.ant-time-picker-panel-clear-btn-icon svg { + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-panel-clear-btn-icon svg:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-time-picker-panel-select { + border-left: 1px solid #e8e8e8; +} +.ant-time-picker-panel-select:first-child { + border-left: 0; +} +.ant-time-picker-panel-select:last-child { + border-right: 0; +} +.ant-time-picker-panel-select li:hover { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +li.ant-time-picker-panel-select-option-selected { + background: #f5f5f5; +} +li.ant-time-picker-panel-select-option-selected:hover { + background: #f5f5f5; +} +li.ant-time-picker-panel-select-option-disabled { + color: rgba(0, 0, 0, 0.25); +} +li.ant-time-picker-panel-select-option-disabled:hover { + background: transparent; +} +.ant-time-picker-panel-addon { + border-top: 1px solid #e8e8e8; +} +.ant-time-picker { + color: rgba(0, 0, 0, 0.65); +} +.ant-time-picker-input { + color: rgba(0, 0, 0, 0.65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-time-picker-input::-moz-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input:-ms-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input::-webkit-input-placeholder { + color: #bfbfbf; +} +.ant-time-picker-input:hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + border-right-width: 1px !important; +} +.ant-time-picker-input:focus { + border-color: color(~`colorPalette("@{primary-color}", 5)`); + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + border-right-width: 1px !important; +} +.ant-time-picker-input-disabled { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-input-disabled:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-time-picker-input[disabled] { + background-color: #f5f5f5; + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-input[disabled]:hover { + border-color: #e6d8d8; + border-right-width: 1px !important; +} +.ant-time-picker-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-time-picker-icon .ant-time-picker-clock-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-timeline { + color: rgba(0, 0, 0, 0.65); +} +.ant-timeline-item-tail { + border-left: 2px solid #e8e8e8; +} +.ant-timeline-item-head { + background-color: #fff; + border-radius: 100px; + border: 2px solid transparent; +} +.ant-timeline-item-head-blue { + border-color: @primary-color; + color: @primary-color; +} +.ant-timeline-item-head-red { + border-color: #f5222d; + color: #f5222d; +} +.ant-timeline-item-head-green { + border-color: #52c41a; + color: #52c41a; +} +.ant-timeline-item-head-custom { + border: 0; + border-radius: 0; +} +.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail { + border-left: 2px dotted #e8e8e8; +} +.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail { + border-left: 2px dotted #e8e8e8; +} +.ant-tooltip { + color: rgba(0, 0, 0, 0.65); +} +.ant-tooltip-inner { + color: #fff; + background-color: rgba(0, 0, 0, 0.75); + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} +.ant-tooltip-arrow { + border-color: transparent; + border-style: solid; +} +.ant-tooltip-placement-top .ant-tooltip-arrow, +.ant-tooltip-placement-topLeft .ant-tooltip-arrow, +.ant-tooltip-placement-topRight .ant-tooltip-arrow { + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-right .ant-tooltip-arrow, +.ant-tooltip-placement-rightTop .ant-tooltip-arrow, +.ant-tooltip-placement-rightBottom .ant-tooltip-arrow { + border-width: 5px 5px 5px 0; + border-right-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-left .ant-tooltip-arrow, +.ant-tooltip-placement-leftTop .ant-tooltip-arrow, +.ant-tooltip-placement-leftBottom .ant-tooltip-arrow { + border-width: 5px 0 5px 5px; + border-left-color: rgba(0, 0, 0, 0.75); +} +.ant-tooltip-placement-bottom .ant-tooltip-arrow, +.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow, +.ant-tooltip-placement-bottomRight .ant-tooltip-arrow { + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.75); +} +.ant-transfer { + color: rgba(0, 0, 0, 0.65); +} +.ant-transfer-disabled .ant-transfer-list { + background: #f5f5f5; +} +.ant-transfer-list { + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-transfer-list-search-action { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-search-action .anticon { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-search-action .anticon:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-transfer-list-header { + border-radius: 4px 4px 0 0; + background: #fff; + color: rgba(0, 0, 0, 0.65); + border-bottom: 1px solid #e8e8e8; +} +.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-transfer-list-content-item-disabled { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-body-not-found { + color: rgba(0, 0, 0, 0.25); +} +.ant-transfer-list-footer { + border-top: 1px solid #e8e8e8; + border-radius: 0 0 4px 4px; +} +.ant-select-tree-checkbox { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, +.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner, +.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner { + border-color: @primary-color; +} +.ant-select-tree-checkbox-checked:after { + border-radius: 2px; + border: 1px solid @primary-color; +} +.ant-select-tree-checkbox-inner { + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; +} +.ant-select-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after { + border: 0; + background-color: @primary-color; +} +.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner { + background-color: @primary-color; + border-color: @primary-color; +} +.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after { + border-color: #f5f5f5; +} +.ant-select-tree-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-select-tree-checkbox-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree-checkbox-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree li .ant-select-tree-node-content-wrapper { + border-radius: 2px; + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree li .ant-select-tree-node-content-wrapper:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected { + background-color: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-select-tree li span.ant-select-tree-switcher, +.ant-select-tree li span.ant-select-tree-iconEle { + border: 0 none; +} +.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon { + color: @primary-color; +} +.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon, +.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon { + color: @primary-color; +} +li.ant-select-tree-treenode-disabled > span:not(.ant-select-tree-switcher), +li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper, +li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper span { + color: rgba(0, 0, 0, 0.25); +} +li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper:hover { + background: transparent; +} +.ant-select-tree-dropdown { + color: rgba(0, 0, 0, 0.65); +} +.ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field { + border: 1px solid #d9d9d9; + border-radius: 4px; +} +.ant-select-tree-dropdown .ant-select-not-found { + color: rgba(0, 0, 0, 0.25); +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper { + border-radius: 0; +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover { + background: transparent; +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover:before, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover:before { + background: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper.ant-tree-node-selected, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper.ant-tree-node-selected { + color: #fff; + background: transparent; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-switcher, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-switcher { + color: #fff; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner { + border-color: @primary-color; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after { + border-color: #fff; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner { + background: #fff; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + border-color: @primary-color; +} +.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before, +.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before { + background: @primary-color; +} +.ant-tree-checkbox { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner, +.ant-tree-checkbox:hover .ant-tree-checkbox-inner, +.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner { + border-color: @primary-color; +} +.ant-tree-checkbox-checked:after { + border-radius: 2px; + border: 1px solid @primary-color; +} +.ant-tree-checkbox-inner { + border: 1px solid #d9d9d9; + border-radius: 2px; + background-color: #fff; +} +.ant-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after { + border: 0; + background-color: @primary-color; +} +.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + border: 2px solid #fff; + border-top: 0; + border-left: 0; +} +.ant-tree-checkbox-checked .ant-tree-checkbox-inner { + background-color: @primary-color; + border-color: @primary-color; +} +.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after { + border-color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner { + border-color: #d9d9d9 !important; + background-color: #f5f5f5; +} +.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after { + border-color: #f5f5f5; +} +.ant-tree-checkbox-disabled + span { + color: rgba(0, 0, 0, 0.25); +} +.ant-tree-checkbox-wrapper { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree-checkbox-group { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree { + color: rgba(0, 0, 0, 0.65); +} +.ant-tree li span[draggable], +.ant-tree li span[draggable="true"] { + border-top: 2px transparent solid; + border-bottom: 2px transparent solid; +} +.ant-tree li.drag-over > span[draggable] { + background-color: @primary-color; + color: white; +} +.ant-tree li.drag-over-gap-top > span[draggable] { + border-top-color: @primary-color; +} +.ant-tree li.drag-over-gap-bottom > span[draggable] { + border-bottom-color: @primary-color; +} +.ant-tree li.filter-node > span { + color: #f5222d !important; +} +.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon, +.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon { + color: @primary-color; +} +.ant-tree li .ant-tree-node-content-wrapper { + border-radius: 2px; + color: rgba(0, 0, 0, 0.65); +} +.ant-tree li .ant-tree-node-content-wrapper:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected { + background-color: color(~`colorPalette("@{primary-color}", 2)`); +} +.ant-tree li span.ant-tree-switcher, +.ant-tree li span.ant-tree-iconEle { + border: 0 none; +} +li.ant-tree-treenode-disabled > span:not(.ant-tree-switcher), +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper, +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span { + color: rgba(0, 0, 0, 0.25); +} +li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover { + background: transparent; +} +.ant-tree.ant-tree-show-line li span.ant-tree-switcher { + background: #fff; + color: rgba(0, 0, 0, 0.45); +} +.ant-tree.ant-tree-show-line li:not(:last-child):before { + border-left: 1px solid #d9d9d9; +} +.ant-upload { + color: rgba(0, 0, 0, 0.65); +} +.ant-upload.ant-upload-select-picture-card { + border: 1px dashed #d9d9d9; + border-radius: 4px; + background-color: #fafafa; +} +.ant-upload.ant-upload-select-picture-card:hover { + border-color: @primary-color; +} +.ant-upload.ant-upload-drag { + border: 1px dashed #d9d9d9; + border-radius: 4px; + background: #fafafa; +} +.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) { + border: 2px dashed color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover { + border-color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon { + color: color(~`colorPalette("@{primary-color}", 5)`); +} +.ant-upload.ant-upload-drag p.ant-upload-text { + color: rgba(0, 0, 0, 0.85); +} +.ant-upload.ant-upload-drag p.ant-upload-hint { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload.ant-upload-drag .anticon-plus { + color: rgba(0, 0, 0, 0.25); +} +.ant-upload.ant-upload-drag .anticon-plus:hover { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload.ant-upload-drag:hover .anticon-plus { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list { + color: rgba(0, 0, 0, 0.65); +} +.ant-upload-list-item-info .anticon-loading, +.ant-upload-list-item-info .anticon-paper-clip { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-item .anticon-close { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-item .anticon-close:hover { + color: rgba(0, 0, 0, 0.65); +} +.ant-upload-list-item:hover .ant-upload-list-item-info { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} +.ant-upload-list-item-error, +.ant-upload-list-item-error .anticon-paper-clip, +.ant-upload-list-item-error .ant-upload-list-item-name { + color: #f5222d; +} +.ant-upload-list-item-error .anticon-close { + color: #f5222d !important; +} +.ant-upload-list-picture .ant-upload-list-item, +.ant-upload-list-picture-card .ant-upload-list-item { + border-radius: 4px; + border: 1px solid #d9d9d9; +} +.ant-upload-list-picture .ant-upload-list-item:hover, +.ant-upload-list-picture-card .ant-upload-list-item:hover { + background: transparent; +} +.ant-upload-list-picture .ant-upload-list-item-error, +.ant-upload-list-picture-card .ant-upload-list-item-error { + border-color: #f5222d; +} +.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, +.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info { + background: transparent; +} +.ant-upload-list-picture .ant-upload-list-item-uploading, +.ant-upload-list-picture-card .ant-upload-list-item-uploading { + border-style: dashed; +} +.ant-upload-list-picture .ant-upload-list-item-icon, +.ant-upload-list-picture-card .ant-upload-list-item-icon { + color: rgba(0, 0, 0, 0.25); +} +.ant-upload-list-picture .ant-upload-list-item-thumbnail.anticon:before, +.ant-upload-list-picture-card .ant-upload-list-item-thumbnail.anticon:before { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list-picture-card .ant-upload-list-item-info:before { + background-color: rgba(0, 0, 0, 0.5); +} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o, +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete { + color: rgba(255, 255, 255, 0.85); +} +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o:hover, +.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover { + color: #fff; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item { + background-color: #fafafa; +} +.ant-upload-list-picture-card .ant-upload-list-item-uploading-text { + color: rgba(0, 0, 0, 0.45); +} +.ant-upload-list .ant-upload-success-icon { + color: #52c41a; +} + +.drawer .drawer-content { + background: #001529; +} + +.ant-list-item-meta .taobao { + color: #ff4000; + border-radius: 4px; +} +.ant-list-item-meta .dingding { + background-color: #2eabff; + color: #fff; + border-radius: 4px; +} +.ant-list-item-meta .alipay { + color: #2eabff; + border-radius: 4px; +} +font.strong { + color: #52c41a; +} +font.medium { + color: #faad14; +} +font.weak { + color: #f5222d; +} + +// 侧边导航栏首页颜色跟随主题变化 +.ant-menu.ant-menu-root > .ant-menu-item:first-child.ant-menu-item-selected { + & > a, + & > a:hover { + color: @primary-color; + } +} + +// begin -------- JAreaLinkage 三级联动样式 -------------- +.cascader-menu-list .cascader-menu-option.hover, +.cascader-menu-list .cascader-menu-option:hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} + +.area-selectable-list .area-select-option.hover { + background-color: color(~`colorPalette("@{primary-color}", 1)`); +} + +.area-select:hover { + border-color: @primary-color; +} + +.area-select:active { + box-shadow: 0 0 0 2px color(~`colorPalette("@{primary-color}", 1)`); +} +// end -------- JAreaLinkage 三级联动样式 -------------- + +// TESTA-521 +.ant-menu-submenu-selected { + color: @primary-color; +} + +// TESTA-521 +.tab-layout-tabs.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active { + border-color: @primary-color !important; +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/public/goright.png b/ant-design-vue-jeecg/public/goright.png new file mode 100644 index 0000000..13c4b54 Binary files /dev/null and b/ant-design-vue-jeecg/public/goright.png differ diff --git a/ant-design-vue-jeecg/public/index.html b/ant-design-vue-jeecg/public/index.html new file mode 100644 index 0000000..4e4cbbf --- /dev/null +++ b/ant-design-vue-jeecg/public/index.html @@ -0,0 +1,262 @@ + + + + + + + + 科亿知识库 + + + + + + + + +
+
+
+
+
+
正在加载 科亿知识库,请耐心等待 + +
+
+
+ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/public/logo.png b/ant-design-vue-jeecg/public/logo.png new file mode 100644 index 0000000..93ea69e Binary files /dev/null and b/ant-design-vue-jeecg/public/logo.png differ diff --git a/ant-design-vue-jeecg/public/pdfjs/LICENSE b/ant-design-vue-jeecg/public/pdfjs/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/ant-design-vue-jeecg/public/pdfjs/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/ant-design-vue-jeecg/public/pdfjs/build/pdf.js b/ant-design-vue-jeecg/public/pdfjs/build/pdf.js new file mode 100644 index 0000000..fde8904 --- /dev/null +++ b/ant-design-vue-jeecg/public/pdfjs/build/pdf.js @@ -0,0 +1,14840 @@ +/** + * @licstart The following is the entire license notice for the + * Javascript code in this page + * + * Copyright 2021 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * Javascript code in this page + */ + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf"] = factory(); + else + root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addLinkAttributes = addLinkAttributes; +exports.deprecated = deprecated; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; +exports.getXfaPageViewport = getXfaPageViewport; +exports.isDataScheme = isDataScheme; +exports.isPdfFile = isPdfFile; +exports.isValidFetchUrl = isValidFetchUrl; +exports.loadScript = loadScript; +exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = exports.LinkTarget = exports.DOMSVGFactory = exports.DOMStandardFontDataFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = void 0; + +var _util = __w_pdfjs_require__(2); + +var _base_factory = __w_pdfjs_require__(5); + +const DEFAULT_LINK_REL = "noopener noreferrer nofollow"; +exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; +const SVG_NS = "http://www.w3.org/2000/svg"; + +class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { + constructor({ + ownerDocument = globalThis.document + } = {}) { + super(); + this._document = ownerDocument; + } + + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + + canvas.width = width; + canvas.height = height; + return canvas; + } + +} + +exports.DOMCanvasFactory = DOMCanvasFactory; + +async function fetchData(url, asTypedArray = false) { + if (isValidFetchUrl(url, document.baseURI)) { + const response = await fetch(url); + + if (!response.ok) { + throw new Error(response.statusText); + } + + return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); + } + + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open("GET", url, true); + + if (asTypedArray) { + request.responseType = "arraybuffer"; + } + + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { + return; + } + + if (request.status === 200 || request.status === 0) { + let data; + + if (asTypedArray && request.response) { + data = new Uint8Array(request.response); + } else if (!asTypedArray && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + + if (data) { + resolve(data); + return; + } + } + + reject(new Error(request.statusText)); + }; + + request.send(null); + }); +} + +class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } + +} + +exports.DOMCMapReaderFactory = DOMCMapReaderFactory; + +class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); + } + +} + +exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; + +class DOMSVGFactory extends _base_factory.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } + +} + +exports.DOMSVGFactory = DOMSVGFactory; + +class PageViewport { + constructor({ + viewBox, + scale, + rotation, + offsetX = 0, + offsetY = 0, + dontFlip = false + }) { + this.viewBox = viewBox; + this.scale = scale; + this.rotation = rotation; + this.offsetX = offsetX; + this.offsetY = offsetY; + const centerX = (viewBox[2] + viewBox[0]) / 2; + const centerY = (viewBox[3] + viewBox[1]) / 2; + let rotateA, rotateB, rotateC, rotateD; + rotation %= 360; + + if (rotation < 0) { + rotation += 360; + } + + switch (rotation) { + case 180: + rotateA = -1; + rotateB = 0; + rotateC = 0; + rotateD = 1; + break; + + case 90: + rotateA = 0; + rotateB = 1; + rotateC = 1; + rotateD = 0; + break; + + case 270: + rotateA = 0; + rotateB = -1; + rotateC = -1; + rotateD = 0; + break; + + case 0: + rotateA = 1; + rotateB = 0; + rotateC = 0; + rotateD = -1; + break; + + default: + throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); + } + + if (dontFlip) { + rotateC = -rotateC; + rotateD = -rotateD; + } + + let offsetCanvasX, offsetCanvasY; + let width, height; + + if (rotateA === 0) { + offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; + offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; + width = Math.abs(viewBox[3] - viewBox[1]) * scale; + height = Math.abs(viewBox[2] - viewBox[0]) * scale; + } else { + offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; + offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; + width = Math.abs(viewBox[2] - viewBox[0]) * scale; + height = Math.abs(viewBox[3] - viewBox[1]) * scale; + } + + this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY]; + this.width = width; + this.height = height; + } + + clone({ + scale = this.scale, + rotation = this.rotation, + offsetX = this.offsetX, + offsetY = this.offsetY, + dontFlip = false + } = {}) { + return new PageViewport({ + viewBox: this.viewBox.slice(), + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + convertToViewportPoint(x, y) { + return _util.Util.applyTransform([x, y], this.transform); + } + + convertToViewportRectangle(rect) { + const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); + + const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); + + return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; + } + + convertToPdfPoint(x, y) { + return _util.Util.applyInverseTransform([x, y], this.transform); + } + +} + +exports.PageViewport = PageViewport; + +class RenderingCancelledException extends _util.BaseException { + constructor(msg, type) { + super(msg); + this.type = type; + } + +} + +exports.RenderingCancelledException = RenderingCancelledException; +const LinkTarget = { + NONE: 0, + SELF: 1, + BLANK: 2, + PARENT: 3, + TOP: 4 +}; +exports.LinkTarget = LinkTarget; + +function addLinkAttributes(link, { + url, + target, + rel, + enabled = true +} = {}) { + (0, _util.assert)(url && typeof url === "string", 'addLinkAttributes: A valid "url" parameter must provided.'); + const urlNullRemoved = (0, _util.removeNullCharacters)(url); + + if (enabled) { + link.href = link.title = urlNullRemoved; + } else { + link.href = ""; + link.title = `Disabled: ${urlNullRemoved}`; + + link.onclick = () => { + return false; + }; + } + + let targetStr = ""; + + switch (target) { + case LinkTarget.NONE: + break; + + case LinkTarget.SELF: + targetStr = "_self"; + break; + + case LinkTarget.BLANK: + targetStr = "_blank"; + break; + + case LinkTarget.PARENT: + targetStr = "_parent"; + break; + + case LinkTarget.TOP: + targetStr = "_top"; + break; + } + + link.target = targetStr; + link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL; +} + +function isDataScheme(url) { + const ii = url.length; + let i = 0; + + while (i < ii && url[i].trim() === "") { + i++; + } + + return url.substring(i, i + 5).toLowerCase() === "data:"; +} + +function isPdfFile(filename) { + return typeof filename === "string" && /\.pdf$/i.test(filename); +} + +function getFilenameFromUrl(url) { + const anchor = url.indexOf("#"); + const query = url.indexOf("?"); + const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); + return url.substring(url.lastIndexOf("/", end) + 1, end); +} + +function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") { + if (typeof url !== "string") { + return defaultFilename; + } + + if (isDataScheme(url)) { + (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); + return defaultFilename; + } + + const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; + const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; + const splitURI = reURI.exec(url); + let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); + + if (suggestedFilename) { + suggestedFilename = suggestedFilename[0]; + + if (suggestedFilename.includes("%")) { + try { + suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; + } catch (ex) {} + } + } + + return suggestedFilename || defaultFilename; +} + +class StatTimer { + constructor() { + this.started = Object.create(null); + this.times = []; + } + + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); + } + + this.started[name] = Date.now(); + } + + timeEnd(name) { + if (!(name in this.started)) { + (0, _util.warn)(`Timer has not been started for ${name}`); + } + + this.times.push({ + name, + start: this.started[name], + end: Date.now() + }); + delete this.started[name]; + } + + toString() { + const outBuf = []; + let longest = 0; + + for (const time of this.times) { + const name = time.name; + + if (name.length > longest) { + longest = name.length; + } + } + + for (const time of this.times) { + const duration = time.end - time.start; + outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`); + } + + return outBuf.join(""); + } + +} + +exports.StatTimer = StatTimer; + +function isValidFetchUrl(url, baseUrl) { + try { + const { + protocol + } = baseUrl ? new URL(url, baseUrl) : new URL(url); + return protocol === "http:" || protocol === "https:"; + } catch (ex) { + return false; + } +} + +function loadScript(src, removeScriptElement = false) { + return new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = src; + + script.onload = function (evt) { + if (removeScriptElement) { + script.remove(); + } + + resolve(evt); + }; + + script.onerror = function () { + reject(new Error(`Cannot load script at: ${script.src}`)); + }; + + (document.head || document.documentElement).appendChild(script); + }); +} + +function deprecated(details) { + console.log("Deprecated API usage: " + details); +} + +let pdfDateStringRegex; + +class PDFDateString { + static toDateObject(input) { + if (!input || !(0, _util.isString)(input)) { + return null; + } + + if (!pdfDateStringRegex) { + pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); + } + + const matches = pdfDateStringRegex.exec(input); + + if (!matches) { + return null; + } + + const year = parseInt(matches[1], 10); + let month = parseInt(matches[2], 10); + month = month >= 1 && month <= 12 ? month - 1 : 0; + let day = parseInt(matches[3], 10); + day = day >= 1 && day <= 31 ? day : 1; + let hour = parseInt(matches[4], 10); + hour = hour >= 0 && hour <= 23 ? hour : 0; + let minute = parseInt(matches[5], 10); + minute = minute >= 0 && minute <= 59 ? minute : 0; + let second = parseInt(matches[6], 10); + second = second >= 0 && second <= 59 ? second : 0; + const universalTimeRelation = matches[7] || "Z"; + let offsetHour = parseInt(matches[8], 10); + offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; + let offsetMinute = parseInt(matches[9], 10) || 0; + offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; + + if (universalTimeRelation === "-") { + hour += offsetHour; + minute += offsetMinute; + } else if (universalTimeRelation === "+") { + hour -= offsetHour; + minute -= offsetMinute; + } + + return new Date(Date.UTC(year, month, day, hour, minute, second)); + } + +} + +exports.PDFDateString = PDFDateString; + +function getXfaPageViewport(xfaPage, { + scale = 1, + rotation = 0 +}) { + const { + width, + height + } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + return new PageViewport({ + viewBox, + scale, + rotation + }); +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.arrayByteLength = arrayByteLength; +exports.arraysToBytes = arraysToBytes; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createObjectURL = createObjectURL; +exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.escapeString = escapeString; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.isAscii = isAscii; +exports.isBool = isBool; +exports.isNum = isNum; +exports.isSameOrigin = isSameOrigin; +exports.isString = isString; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.removeNullCharacters = removeNullCharacters; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; +exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; + +__w_pdfjs_require__(3); + +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +const PermissionFlag = { + PRINT: 0x04, + MODIFY_CONTENTS: 0x08, + COPY: 0x10, + MODIFY_ANNOTATIONS: 0x20, + FILL_INTERACTIVE_FORMS: 0x100, + COPY_FOR_ACCESSIBILITY: 0x200, + ASSEMBLE: 0x400, + PRINT_HIGH_QUALITY: 0x800 +}; +exports.PermissionFlag = PermissionFlag; +const TextRenderingMode = { + FILL: 0, + STROKE: 1, + FILL_STROKE: 2, + INVISIBLE: 3, + FILL_ADD_TO_PATH: 4, + STROKE_ADD_TO_PATH: 5, + FILL_STROKE_ADD_TO_PATH: 6, + ADD_TO_PATH: 7, + FILL_STROKE_MASK: 3, + ADD_TO_PATH_FLAG: 4 +}; +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +exports.ImageKind = ImageKind; +const AnnotationType = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26 +}; +exports.AnnotationType = AnnotationType; +const AnnotationStateModelType = { + MARKED: "Marked", + REVIEW: "Review" +}; +exports.AnnotationStateModelType = AnnotationStateModelType; +const AnnotationMarkedState = { + MARKED: "Marked", + UNMARKED: "Unmarked" +}; +exports.AnnotationMarkedState = AnnotationMarkedState; +const AnnotationReviewState = { + ACCEPTED: "Accepted", + REJECTED: "Rejected", + CANCELLED: "Cancelled", + COMPLETED: "Completed", + NONE: "None" +}; +exports.AnnotationReviewState = AnnotationReviewState; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { + READONLY: 0x0000001, + REQUIRED: 0x0000002, + NOEXPORT: 0x0000004, + MULTILINE: 0x0001000, + PASSWORD: 0x0002000, + NOTOGGLETOOFF: 0x0004000, + RADIO: 0x0008000, + PUSHBUTTON: 0x0010000, + COMBO: 0x0020000, + EDIT: 0x0040000, + SORT: 0x0080000, + FILESELECT: 0x0100000, + MULTISELECT: 0x0200000, + DONOTSPELLCHECK: 0x0400000, + DONOTSCROLL: 0x0800000, + COMB: 0x1000000, + RICHTEXT: 0x2000000, + RADIOSINUNISON: 0x2000000, + COMMITONSELCHANGE: 0x4000000 +}; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const StreamType = { + UNKNOWN: "UNKNOWN", + FLATE: "FLATE", + LZW: "LZW", + DCT: "DCT", + JPX: "JPX", + JBIG: "JBIG", + A85: "A85", + AHX: "AHX", + CCF: "CCF", + RLX: "RLX" +}; +exports.StreamType = StreamType; +const FontType = { + UNKNOWN: "UNKNOWN", + TYPE1: "TYPE1", + TYPE1STANDARD: "TYPE1STANDARD", + TYPE1C: "TYPE1C", + CIDFONTTYPE0: "CIDFONTTYPE0", + CIDFONTTYPE0C: "CIDFONTTYPE0C", + TRUETYPE: "TRUETYPE", + CIDFONTTYPE2: "CIDFONTTYPE2", + TYPE3: "TYPE3", + OPENTYPE: "OPENTYPE", + TYPE0: "TYPE0", + MMTYPE1: "MMTYPE1" +}; +exports.FontType = FontType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { + NONE: 0, + BINARY: 1, + STREAM: 2 +}; +exports.CMapCompressionType = CMapCompressionType; +const OPS = { + dependency: 1, + setLineWidth: 2, + setLineCap: 3, + setLineJoin: 4, + setMiterLimit: 5, + setDash: 6, + setRenderingIntent: 7, + setFlatness: 8, + setGState: 9, + save: 10, + restore: 11, + transform: 12, + moveTo: 13, + lineTo: 14, + curveTo: 15, + curveTo2: 16, + curveTo3: 17, + closePath: 18, + rectangle: 19, + stroke: 20, + closeStroke: 21, + fill: 22, + eoFill: 23, + fillStroke: 24, + eoFillStroke: 25, + closeFillStroke: 26, + closeEOFillStroke: 27, + endPath: 28, + clip: 29, + eoClip: 30, + beginText: 31, + endText: 32, + setCharSpacing: 33, + setWordSpacing: 34, + setHScale: 35, + setLeading: 36, + setFont: 37, + setTextRenderingMode: 38, + setTextRise: 39, + moveText: 40, + setLeadingMoveText: 41, + setTextMatrix: 42, + nextLine: 43, + showText: 44, + showSpacedText: 45, + nextLineShowText: 46, + nextLineSetSpacingShowText: 47, + setCharWidth: 48, + setCharWidthAndBounds: 49, + setStrokeColorSpace: 50, + setFillColorSpace: 51, + setStrokeColor: 52, + setStrokeColorN: 53, + setFillColor: 54, + setFillColorN: 55, + setStrokeGray: 56, + setFillGray: 57, + setStrokeRGBColor: 58, + setFillRGBColor: 59, + setStrokeCMYKColor: 60, + setFillCMYKColor: 61, + shadingFill: 62, + beginInlineImage: 63, + beginImageData: 64, + endInlineImage: 65, + paintXObject: 66, + markPoint: 67, + markPointProps: 68, + beginMarkedContent: 69, + beginMarkedContentProps: 70, + endMarkedContent: 71, + beginCompat: 72, + endCompat: 73, + paintFormXObjectBegin: 74, + paintFormXObjectEnd: 75, + beginGroup: 76, + endGroup: 77, + beginAnnotations: 78, + endAnnotations: 79, + beginAnnotation: 80, + endAnnotation: 81, + paintJpegXObject: 82, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91 +}; +exports.OPS = OPS; +const UNSUPPORTED_FEATURES = { + unknown: "unknown", + forms: "forms", + javaScript: "javaScript", + signatures: "signatures", + smask: "smask", + shadingPattern: "shadingPattern", + font: "font", + errorTilingPattern: "errorTilingPattern", + errorExtGState: "errorExtGState", + errorXObject: "errorXObject", + errorFontLoadType3: "errorFontLoadType3", + errorFontState: "errorFontState", + errorFontMissing: "errorFontMissing", + errorFontTranslate: "errorFontTranslate", + errorColorSpace: "errorColorSpace", + errorOperatorList: "errorOperatorList", + errorFontToUnicode: "errorFontToUnicode", + errorFontLoadNative: "errorFontLoadNative", + errorFontBuildPath: "errorFontBuildPath", + errorFontGetPath: "errorFontGetPath", + errorMarkedContent: "errorMarkedContent" +}; +exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; + +function setVerbosityLevel(level) { + if (Number.isInteger(level)) { + verbosity = level; + } +} + +function getVerbosityLevel() { + return verbosity; +} + +function info(msg) { + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); + } +} + +function warn(msg) { + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); + } +} + +function unreachable(msg) { + throw new Error(msg); +} + +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} + +function isSameOrigin(baseUrl, otherUrl) { + let base; + + try { + base = new URL(baseUrl); + + if (!base.origin || base.origin === "null") { + return false; + } + } catch (e) { + return false; + } + + const other = new URL(otherUrl, base); + return base.origin === other.origin; +} + +function _isValidProtocol(url) { + if (!url) { + return false; + } + + switch (url.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return true; + + default: + return false; + } +} + +function createValidAbsoluteUrl(url, baseUrl) { + if (!url) { + return null; + } + + try { + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + + if (_isValidProtocol(absoluteUrl)) { + return absoluteUrl; + } + } catch (ex) {} + + return null; +} + +function shadow(obj, prop, value) { + Object.defineProperty(obj, prop, { + value, + enumerable: true, + configurable: true, + writable: false + }); + return value; +} + +const BaseException = function BaseExceptionClosure() { + function BaseException(message) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + + this.message = message; + this.name = this.constructor.name; + } + + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); + +exports.BaseException = BaseException; + +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg); + this.code = code; + } + +} + +exports.PasswordException = PasswordException; + +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg); + this.details = details; + } + +} + +exports.UnknownErrorException = UnknownErrorException; + +class InvalidPDFException extends BaseException {} + +exports.InvalidPDFException = InvalidPDFException; + +class MissingPDFException extends BaseException {} + +exports.MissingPDFException = MissingPDFException; + +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg); + this.status = status; + } + +} + +exports.UnexpectedResponseException = UnexpectedResponseException; + +class FormatError extends BaseException {} + +exports.FormatError = FormatError; + +class AbortException extends BaseException {} + +exports.AbortException = AbortException; +const NullCharactersRegExp = /\x00/g; + +function removeNullCharacters(str) { + if (typeof str !== "string") { + warn("The argument for removeNullCharacters must be a string."); + return str; + } + + return str.replace(NullCharactersRegExp, ""); +} + +function bytesToString(bytes) { + assert(bytes !== null && typeof bytes === "object" && bytes.length !== undefined, "Invalid argument for bytesToString"); + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; + + if (length < MAX_ARGUMENT_COUNT) { + return String.fromCharCode.apply(null, bytes); + } + + const strBuf = []; + + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); + strBuf.push(String.fromCharCode.apply(null, chunk)); + } + + return strBuf.join(""); +} + +function stringToBytes(str) { + assert(typeof str === "string", "Invalid argument for stringToBytes"); + const length = str.length; + const bytes = new Uint8Array(length); + + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; + } + + return bytes; +} + +function arrayByteLength(arr) { + if (arr.length !== undefined) { + return arr.length; + } + + assert(arr.byteLength !== undefined, "arrayByteLength - invalid argument."); + return arr.byteLength; +} + +function arraysToBytes(arr) { + const length = arr.length; + + if (length === 1 && arr[0] instanceof Uint8Array) { + return arr[0]; + } + + let resultLength = 0; + + for (let i = 0; i < length; i++) { + resultLength += arrayByteLength(arr[i]); + } + + let pos = 0; + const data = new Uint8Array(resultLength); + + for (let i = 0; i < length; i++) { + let item = arr[i]; + + if (!(item instanceof Uint8Array)) { + if (typeof item === "string") { + item = stringToBytes(item); + } else { + item = new Uint8Array(item); + } + } + + const itemLength = item.byteLength; + data.set(item, pos); + pos += itemLength; + } + + return data; +} + +function string32(value) { + return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); +} + +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromMap(map) { + const obj = Object.create(null); + + for (const [key, value] of map) { + obj[key] = value; + } + + return obj; +} + +function isLittleEndian() { + const buffer8 = new Uint8Array(4); + buffer8[0] = 1; + const view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} + +const IsLittleEndianCached = { + get value() { + return shadow(this, "value", isLittleEndian()); + } + +}; +exports.IsLittleEndianCached = IsLittleEndianCached; + +function isEvalSupported() { + try { + new Function(""); + return true; + } catch (e) { + return false; + } +} + +const IsEvalSupportedCached = { + get value() { + return shadow(this, "value", isEvalSupported()); + } + +}; +exports.IsEvalSupportedCached = IsEvalSupportedCached; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); + +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + + static transform(m1, m2) { + return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; + } + + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; + return [xt, yt]; + } + + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + return [xt, yt]; + } + + static getAxialAlignedBoundingBox(r, m) { + const p1 = Util.applyTransform(r, m); + const p2 = Util.applyTransform(r.slice(2, 4), m); + const p3 = Util.applyTransform([r[0], r[3]], m); + const p4 = Util.applyTransform([r[2], r[1]], m); + return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; + } + + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; + return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; + } + + static apply3dTransform(m, v) { + return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; + } + + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; + return [Math.sqrt(sx), Math.sqrt(sy)]; + } + + static normalizeRect(rect) { + const r = rect.slice(0); + + if (rect[0] > rect[2]) { + r[0] = rect[2]; + r[2] = rect[0]; + } + + if (rect[1] > rect[3]) { + r[1] = rect[3]; + r[3] = rect[1]; + } + + return r; + } + + static intersect(rect1, rect2) { + function compare(a, b) { + return a - b; + } + + const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare); + const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare); + const result = []; + rect1 = Util.normalizeRect(rect1); + rect2 = Util.normalizeRect(rect2); + + if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) { + result[0] = orderedX[1]; + result[2] = orderedX[2]; + } else { + return null; + } + + if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) { + result[1] = orderedY[1]; + result[3] = orderedY[2]; + } else { + return null; + } + + return result; + } + +} + +exports.Util = Util; +const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; + +function stringToPDFString(str) { + const length = str.length, + strBuf = []; + + if (str[0] === "\xFE" && str[1] === "\xFF") { + for (let i = 2; i < length; i += 2) { + strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); + } + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + for (let i = 2; i < length; i += 2) { + strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i))); + } + } else { + for (let i = 0; i < length; ++i) { + const code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + } + + return strBuf.join(""); +} + +function escapeString(str) { + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + + return buf.join(""); +} + +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} + +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} + +function isBool(v) { + return typeof v === "boolean"; +} + +function isNum(v) { + return typeof v === "number"; +} + +function isString(v) { + return typeof v === "string"; +} + +function isArrayBuffer(v) { + return typeof v === "object" && v !== null && v.byteLength !== undefined; +} + +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + + return true; +} + +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); +} + +function createPromiseCapability() { + const capability = Object.create(null); + let isSettled = false; + Object.defineProperty(capability, "settled", { + get() { + return isSettled; + } + + }); + capability.promise = new Promise(function (resolve, reject) { + capability.resolve = function (data) { + isSettled = true; + resolve(data); + }; + + capability.reject = function (reason) { + isSettled = true; + reject(reason); + }; + }); + return capability; +} + +function createObjectURL(data, contentType = "", forceDataSchema = false) { + if (URL.createObjectURL && !forceDataSchema) { + return URL.createObjectURL(new Blob([data], { + type: contentType + })); + } + + const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + let buffer = `data:${contentType};base64,`; + + for (let i = 0, ii = data.length; i < ii; i += 3) { + const b1 = data[i] & 0xff; + const b2 = data[i + 1] & 0xff; + const b3 = data[i + 2] & 0xff; + const d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; + const d4 = i + 2 < ii ? b3 & 0x3f : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; + } + + return buffer; +} + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { + + + +var _is_node = __w_pdfjs_require__(4); + +; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseSVGFactory = exports.BaseStandardFontDataFactory = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0; + +var _util = __w_pdfjs_require__(2); + +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } + } + + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + + const canvas = this._createCanvas(width, height); + + return { + canvas, + context: canvas.getContext("2d") + }; + } + + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } + + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + + _createCanvas(width, height) { + (0, _util.unreachable)("Abstract method `_createCanvas` called."); + } + +} + +exports.BaseCanvasFactory = BaseCanvasFactory; + +class BaseCMapReaderFactory { + constructor({ + baseUrl = null, + isCompressed = false + }) { + if (this.constructor === BaseCMapReaderFactory) { + (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); + } + + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + + async fetch({ + name + }) { + if (!this.baseUrl) { + throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); + } + + if (!name) { + throw new Error("CMap name must be specified."); + } + + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; + return this._fetchData(url, compressionType).catch(reason => { + throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); + }); + } + + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; + +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } + + this.baseUrl = baseUrl; + } + + async fetch({ + filename + }) { + if (!this.baseUrl) { + throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); + } + + if (!filename) { + throw new Error("Font filename must be specified."); + } + + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; + +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } + } + + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + + const svg = this._createSVG("svg:svg"); + + svg.setAttribute("version", "1.1"); + svg.setAttribute("width", `${width}px`); + svg.setAttribute("height", `${height}px`); + svg.setAttribute("preserveAspectRatio", "none"); + svg.setAttribute("viewBox", `0 0 ${width} ${height}`); + return svg; + } + + createElement(type) { + if (typeof type !== "string") { + throw new Error("Invalid SVG element type"); + } + + return this._createSVG(type); + } + + _createSVG(type) { + (0, _util.unreachable)("Abstract method `_createSVG` called."); + } + +} + +exports.BaseSVGFactory = BaseSVGFactory; + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getDocument = getDocument; +exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; +exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = exports.build = void 0; + +var _util = __w_pdfjs_require__(2); + +var _display_utils = __w_pdfjs_require__(1); + +var _font_loader = __w_pdfjs_require__(7); + +var _node_utils = __w_pdfjs_require__(8); + +var _annotation_storage = __w_pdfjs_require__(9); + +var _canvas = __w_pdfjs_require__(10); + +var _worker_options = __w_pdfjs_require__(12); + +var _is_node = __w_pdfjs_require__(4); + +var _message_handler = __w_pdfjs_require__(13); + +var _metadata = __w_pdfjs_require__(14); + +var _optional_content_config = __w_pdfjs_require__(15); + +var _transport_stream = __w_pdfjs_require__(16); + +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +const DefaultStandardFontDataFactory = _is_node.isNodeJS ? _node_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; +let createPDFNetworkStream; + +function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { + createPDFNetworkStream = pdfNetworkStreamFactory; +} + +function getDocument(src) { + const task = new PDFDocumentLoadingTask(); + let source; + + if (typeof src === "string" || src instanceof URL) { + source = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + source = { + data: src + }; + } else if (src instanceof PDFDataRangeTransport) { + source = { + range: src + }; + } else { + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object."); + } + + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + + source = src; + } + + const params = Object.create(null); + let rangeTransport = null, + worker = null; + + for (const key in source) { + const value = source[key]; + + switch (key) { + case "url": + if (typeof window !== "undefined") { + try { + params[key] = new URL(value, window.location).href; + continue; + } catch (ex) { + (0, _util.warn)(`Cannot create valid URL: "${ex}".`); + } + } else if (typeof value === "string" || value instanceof URL) { + params[key] = value.toString(); + continue; + } + + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); + + case "range": + rangeTransport = value; + continue; + + case "worker": + worker = value; + continue; + + case "data": + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { + params[key] = new Uint8Array(value); + } else if (value instanceof Uint8Array) { + break; + } else if (typeof value === "string") { + params[key] = (0, _util.stringToBytes)(value); + } else if (typeof value === "object" && value !== null && !isNaN(value.length)) { + params[key] = new Uint8Array(value); + } else if ((0, _util.isArrayBuffer)(value)) { + params[key] = new Uint8Array(value); + } else { + throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property."); + } + + continue; + } + + params[key] = value; + } + + params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; + params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; + params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory; + params.ignoreErrors = params.stopAtErrors !== true; + params.fontExtraProperties = params.fontExtraProperties === true; + params.pdfBug = params.pdfBug === true; + params.enableXfa = params.enableXfa === true; + + if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { + params.docBaseUrl = null; + } + + if (!Number.isInteger(params.maxImageSize)) { + params.maxImageSize = -1; + } + + if (typeof params.useWorkerFetch !== "boolean") { + params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory; + } + + if (typeof params.isEvalSupported !== "boolean") { + params.isEvalSupported = true; + } + + if (typeof params.disableFontFace !== "boolean") { + params.disableFontFace = _is_node.isNodeJS; + } + + if (typeof params.useSystemFonts !== "boolean") { + params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace; + } + + if (typeof params.ownerDocument === "undefined") { + params.ownerDocument = globalThis.document; + } + + if (typeof params.disableRange !== "boolean") { + params.disableRange = false; + } + + if (typeof params.disableStream !== "boolean") { + params.disableStream = false; + } + + if (typeof params.disableAutoFetch !== "boolean") { + params.disableAutoFetch = false; + } + + (0, _util.setVerbosityLevel)(params.verbosity); + + if (!worker) { + const workerParams = { + verbosity: params.verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + + const docId = task.docId; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); + + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length: params.length, + initialData: params.initialData, + progressiveDone: params.progressiveDone, + contentDispositionFilename: params.contentDispositionFilename, + disableRange: params.disableRange, + disableStream: params.disableStream + }, rangeTransport); + } else if (!params.data) { + networkStream = createPDFNetworkStream({ + url: params.url, + length: params.length, + httpHeaders: params.httpHeaders, + withCredentials: params.withCredentials, + rangeChunkSize: params.rangeChunkSize, + disableRange: params.disableRange, + disableStream: params.disableStream + }); + } + + resolve(networkStream); + }); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); + messageHandler.postMessageTransfers = worker.postMessageTransfers; + const transport = new WorkerTransport(messageHandler, task, networkStream, params); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} + +function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { + if (worker.destroyed) { + return Promise.reject(new Error("Worker was destroyed")); + } + + if (pdfDataRangeTransport) { + source.length = pdfDataRangeTransport.length; + source.initialData = pdfDataRangeTransport.initialData; + source.progressiveDone = pdfDataRangeTransport.progressiveDone; + source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; + } + + return worker.messageHandler.sendWithPromise("GetDocRequest", { + docId, + apiVersion: '2.10.377', + source: { + data: source.data, + url: source.url, + password: source.password, + disableAutoFetch: source.disableAutoFetch, + rangeChunkSize: source.rangeChunkSize, + length: source.length + }, + maxImageSize: source.maxImageSize, + disableFontFace: source.disableFontFace, + postMessageTransfers: worker.postMessageTransfers, + docBaseUrl: source.docBaseUrl, + ignoreErrors: source.ignoreErrors, + isEvalSupported: source.isEvalSupported, + fontExtraProperties: source.fontExtraProperties, + enableXfa: source.enableXfa, + useSystemFonts: source.useSystemFonts, + cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, + standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null + }).then(function (workerId) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + return workerId; + }); +} + +const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { + let nextDocumentId = 0; + + class PDFDocumentLoadingTask { + constructor() { + this._capability = (0, _util.createPromiseCapability)(); + this._transport = null; + this._worker = null; + this.docId = "d" + nextDocumentId++; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + this.onUnsupportedFeature = null; + } + + get promise() { + return this._capability.promise; + } + + destroy() { + this.destroyed = true; + const transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy(); + return transportDestroyed.then(() => { + this._transport = null; + + if (this._worker) { + this._worker.destroy(); + + this._worker = null; + } + }); + } + + } + + return PDFDocumentLoadingTask; +}(); + +class PDFDataRangeTransport { + constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) { + this.length = length; + this.initialData = initialData; + this.progressiveDone = progressiveDone; + this.contentDispositionFilename = contentDispositionFilename; + this._rangeListeners = []; + this._progressListeners = []; + this._progressiveReadListeners = []; + this._progressiveDoneListeners = []; + this._readyCapability = (0, _util.createPromiseCapability)(); + } + + addRangeListener(listener) { + this._rangeListeners.push(listener); + } + + addProgressListener(listener) { + this._progressListeners.push(listener); + } + + addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + } + + addProgressiveDoneListener(listener) { + this._progressiveDoneListeners.push(listener); + } + + onDataRange(begin, chunk) { + for (const listener of this._rangeListeners) { + listener(begin, chunk); + } + } + + onDataProgress(loaded, total) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressListeners) { + listener(loaded, total); + } + }); + } + + onDataProgressiveRead(chunk) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveReadListeners) { + listener(chunk); + } + }); + } + + onDataProgressiveDone() { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveDoneListeners) { + listener(); + } + }); + } + + transportReady() { + this._readyCapability.resolve(); + } + + requestDataRange(begin, end) { + (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } + + abort() {} + +} + +exports.PDFDataRangeTransport = PDFDataRangeTransport; + +class PDFDocumentProxy { + constructor(pdfInfo, transport) { + this._pdfInfo = pdfInfo; + this._transport = transport; + Object.defineProperty(this, "fingerprint", { + get() { + (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead."); + return this.fingerprints[0]; + } + + }); + } + + get annotationStorage() { + return this._transport.annotationStorage; + } + + get numPages() { + return this._pdfInfo.numPages; + } + + get fingerprints() { + return this._pdfInfo.fingerprints; + } + + get isPureXfa() { + return !!this._transport._htmlForXfa; + } + + get allXfaHtml() { + return this._transport._htmlForXfa; + } + + getPage(pageNumber) { + return this._transport.getPage(pageNumber); + } + + getPageIndex(ref) { + return this._transport.getPageIndex(ref); + } + + getDestinations() { + return this._transport.getDestinations(); + } + + getDestination(id) { + return this._transport.getDestination(id); + } + + getPageLabels() { + return this._transport.getPageLabels(); + } + + getPageLayout() { + return this._transport.getPageLayout(); + } + + getPageMode() { + return this._transport.getPageMode(); + } + + getViewerPreferences() { + return this._transport.getViewerPreferences(); + } + + getOpenAction() { + return this._transport.getOpenAction(); + } + + getAttachments() { + return this._transport.getAttachments(); + } + + getJavaScript() { + return this._transport.getJavaScript(); + } + + getJSActions() { + return this._transport.getDocJSActions(); + } + + getOutline() { + return this._transport.getOutline(); + } + + getOptionalContentConfig() { + return this._transport.getOptionalContentConfig(); + } + + getPermissions() { + return this._transport.getPermissions(); + } + + getMetadata() { + return this._transport.getMetadata(); + } + + getMarkInfo() { + return this._transport.getMarkInfo(); + } + + getData() { + return this._transport.getData(); + } + + getDownloadInfo() { + return this._transport.downloadInfoCapability.promise; + } + + getStats() { + return this._transport.getStats(); + } + + cleanup(keepLoadedFonts = false) { + return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); + } + + destroy() { + return this.loadingTask.destroy(); + } + + get loadingParams() { + return this._transport.loadingParams; + } + + get loadingTask() { + return this._transport.loadingTask; + } + + saveDocument() { + if (this._transport.annotationStorage.size <= 0) { + (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + + return this._transport.saveDocument(); + } + + getFieldObjects() { + return this._transport.getFieldObjects(); + } + + hasJSActions() { + return this._transport.hasJSActions(); + } + + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } + +} + +exports.PDFDocumentProxy = PDFDocumentProxy; + +class PDFPageProxy { + constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._ownerDocument = ownerDocument; + this._transport = transport; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this.cleanupAfterRender = false; + this.pendingCleanup = false; + this._intentStates = new Map(); + this.destroyed = false; + } + + get pageNumber() { + return this._pageIndex + 1; + } + + get rotate() { + return this._pageInfo.rotate; + } + + get ref() { + return this._pageInfo.ref; + } + + get userUnit() { + return this._pageInfo.userUnit; + } + + get view() { + return this._pageInfo.view; + } + + getViewport({ + scale, + rotation = this.rotate, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = {}) { + return new _display_utils.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + getAnnotations({ + intent = null + } = {}) { + const renderingIntent = intent === "display" || intent === "print" ? intent : null; + + if (!this._annotationsPromise || this._annotationsIntent !== renderingIntent) { + this._annotationsPromise = this._transport.getAnnotations(this._pageIndex, renderingIntent); + this._annotationsIntent = renderingIntent; + } + + return this._annotationsPromise; + } + + getJSActions() { + return this._jsActionsPromise || (this._jsActionsPromise = this._transport.getPageJSActions(this._pageIndex)); + } + + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + + render({ + canvasContext, + viewport, + intent = "display", + renderInteractiveForms = false, + transform = null, + imageLayer = null, + canvasFactory = null, + background = null, + includeAnnotationStorage = false, + optionalContentConfigPromise = null + }) { + var _intentState; + + if (this._stats) { + this._stats.time("Overall"); + } + + const renderingIntent = intent === "print" ? "print" : "display"; + this.pendingCleanup = false; + + if (!optionalContentConfigPromise) { + optionalContentConfigPromise = this._transport.getOptionalContentConfig(); + } + + let intentState = this._intentStates.get(renderingIntent); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(renderingIntent, intentState); + } + + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + + const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ + ownerDocument: this._ownerDocument + }); + const annotationStorage = includeAnnotationStorage ? this._transport.annotationStorage.serializable : null; + + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList({ + pageIndex: this._pageIndex, + intent: renderingIntent, + renderInteractiveForms: renderInteractiveForms === true, + annotationStorage + }); + } + + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + + if (this.cleanupAfterRender || renderingIntent === "print") { + this.pendingCleanup = true; + } + + this._tryCleanup(); + + if (error) { + internalRenderTask.capability.reject(error); + + this._abortOperatorList({ + intentState, + reason: error + }); + } else { + internalRenderTask.capability.resolve(); + } + + if (this._stats) { + this._stats.timeEnd("Rendering"); + + this._stats.timeEnd("Overall"); + } + }; + + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + imageLayer, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: canvasFactoryInstance, + useRequestAnimationFrame: renderingIntent !== "print", + pdfBug: this._pdfBug + }); + ((_intentState = intentState).renderTasks || (_intentState.renderTasks = new Set())).add(internalRenderTask); + const renderTask = internalRenderTask.task; + Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => { + if (this.pendingCleanup) { + complete(); + return; + } + + if (this._stats) { + this._stats.time("Rendering"); + } + + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } + + getOperatorList({ + intent = "display" + } = {}) { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); + } + } + + const renderingIntent = `oplist-${intent === "print" ? "print" : "display"}`; + + let intentState = this._intentStates.get(renderingIntent); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(renderingIntent, intentState); + } + + let opListTask; + + if (!intentState.opListReadCapability) { + var _intentState2; + + opListTask = Object.create(null); + opListTask.operatorListChanged = operatorListChanged; + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); + ((_intentState2 = intentState).renderTasks || (_intentState2.renderTasks = new Set())).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList({ + pageIndex: this._pageIndex, + intent: renderingIntent + }); + } + + return intentState.opListReadCapability.promise; + } + + streamTextContent({ + normalizeWhitespace = false, + disableCombineTextItems = false, + includeMarkedContent = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + normalizeWhitespace: normalizeWhitespace === true, + combineTextItems: disableCombineTextItems !== true, + includeMarkedContent: includeMarkedContent === true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + + size(textContent) { + return textContent.items.length; + } + + }); + } + + getTextContent(params = {}) { + const readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function ({ + value, + done + }) { + if (done) { + resolve(textContent); + return; + } + + Object.assign(textContent.styles, value.styles); + textContent.items.push(...value.items); + pump(); + }, reject); + } + + const reader = readableStream.getReader(); + const textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + } + + getStructTree() { + return this._structTreePromise || (this._structTreePromise = this._transport.getStructTree(this._pageIndex)); + } + + _destroy() { + this.destroyed = true; + this._transport.pageCache[this._pageIndex] = null; + const waitOn = []; + + for (const [intent, intentState] of this._intentStates) { + this._abortOperatorList({ + intentState, + reason: new Error("Page was destroyed."), + force: true + }); + + if (intent.startsWith("oplist-")) { + continue; + } + + for (const internalRenderTask of intentState.renderTasks) { + waitOn.push(internalRenderTask.completed); + internalRenderTask.cancel(); + } + } + + this.objs.clear(); + this._annotationsPromise = null; + this._jsActionsPromise = null; + this._structTreePromise = null; + this.pendingCleanup = false; + return Promise.all(waitOn); + } + + cleanup(resetStats = false) { + this.pendingCleanup = true; + return this._tryCleanup(resetStats); + } + + _tryCleanup(resetStats = false) { + if (!this.pendingCleanup) { + return false; + } + + for (const { + renderTasks, + operatorList + } of this._intentStates.values()) { + if (renderTasks.size > 0 || !operatorList.lastChunk) { + return false; + } + } + + this._intentStates.clear(); + + this.objs.clear(); + this._annotationsPromise = null; + this._jsActionsPromise = null; + this._structTreePromise = null; + + if (resetStats && this._stats) { + this._stats = new _display_utils.StatTimer(); + } + + this.pendingCleanup = false; + return true; + } + + _startRenderPage(transparency, intent) { + const intentState = this._intentStates.get(intent); + + if (!intentState) { + return; + } + + if (this._stats) { + this._stats.timeEnd("Page Request"); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.resolve(transparency); + } + } + + _renderPageChunk(operatorListChunk, intentState) { + for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { + intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); + intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + } + + intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + if (operatorListChunk.lastChunk) { + this._tryCleanup(); + } + } + + _pumpOperatorList(args) { + (0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.'); + + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", args); + + const reader = readableStream.getReader(); + + const intentState = this._intentStates.get(args.intent); + + intentState.streamReader = reader; + + const pump = () => { + reader.read().then(({ + value, + done + }) => { + if (done) { + intentState.streamReader = null; + return; + } + + if (this._transport.destroyed) { + return; + } + + this._renderPageChunk(value, intentState); + + pump(); + }, reason => { + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + this._tryCleanup(); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(reason); + } else if (intentState.opListReadCapability) { + intentState.opListReadCapability.reject(reason); + } else { + throw reason; + } + }); + }; + + pump(); + } + + _abortOperatorList({ + intentState, + reason, + force = false + }) { + (0, _util.assert)(reason instanceof Error || typeof reason === "object" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected "reason" argument.'); + + if (!intentState.streamReader) { + return; + } + + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + + if (reason instanceof _display_utils.RenderingCancelledException) { + intentState.streamReaderCancelTimeout = setTimeout(() => { + this._abortOperatorList({ + intentState, + reason, + force: true + }); + + intentState.streamReaderCancelTimeout = null; + }, RENDERING_CANCELLED_TIMEOUT); + return; + } + } + + intentState.streamReader.cancel(new _util.AbortException(reason?.message)); + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + for (const [intent, curIntentState] of this._intentStates) { + if (curIntentState === intentState) { + this._intentStates.delete(intent); + + break; + } + } + + this.cleanup(); + } + + get stats() { + return this._stats; + } + +} + +exports.PDFPageProxy = PDFPageProxy; + +class LoopbackPort { + constructor() { + this._listeners = []; + this._deferred = Promise.resolve(undefined); + } + + postMessage(obj, transfers) { + function cloneValue(value) { + if (typeof value === "function" || typeof value === "symbol" || value instanceof URL) { + throw new Error(`LoopbackPort.postMessage - cannot clone: ${value?.toString()}`); + } + + if (typeof value !== "object" || value === null) { + return value; + } + + if (cloned.has(value)) { + return cloned.get(value); + } + + let buffer, result; + + if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { + if (transfers?.includes(buffer)) { + result = new value.constructor(buffer, value.byteOffset, value.byteLength); + } else { + result = new value.constructor(value); + } + + cloned.set(value, result); + return result; + } + + if (value instanceof Map) { + result = new Map(); + cloned.set(value, result); + + for (const [key, val] of value) { + result.set(key, cloneValue(val)); + } + + return result; + } + + if (value instanceof Set) { + result = new Set(); + cloned.set(value, result); + + for (const val of value) { + result.add(cloneValue(val)); + } + + return result; + } + + result = Array.isArray(value) ? [] : Object.create(null); + cloned.set(value, result); + + for (const i in value) { + let desc, + p = value; + + while (!(desc = Object.getOwnPropertyDescriptor(p, i))) { + p = Object.getPrototypeOf(p); + } + + if (typeof desc.value === "undefined") { + continue; + } + + if (typeof desc.value === "function" && !value.hasOwnProperty?.(i)) { + continue; + } + + result[i] = cloneValue(desc.value); + } + + return result; + } + + const cloned = new WeakMap(); + const event = { + data: cloneValue(obj) + }; + + this._deferred.then(() => { + for (const listener of this._listeners) { + listener.call(this, event); + } + }); + } + + addEventListener(name, listener) { + this._listeners.push(listener); + } + + removeEventListener(name, listener) { + const i = this._listeners.indexOf(listener); + + this._listeners.splice(i, 1); + } + + terminate() { + this._listeners.length = 0; + } + +} + +exports.LoopbackPort = LoopbackPort; + +const PDFWorker = function PDFWorkerClosure() { + const pdfWorkerPorts = new WeakMap(); + let isWorkerDisabled = false; + let fallbackWorkerSrc; + let nextFakeWorkerId = 0; + let fakeWorkerCapability; + + if (_is_node.isNodeJS && typeof require === "function") { + isWorkerDisabled = true; + fallbackWorkerSrc = "./pdf.worker.js"; + } else if (typeof document === "object" && "currentScript" in document) { + const pdfjsFilePath = document.currentScript?.src; + + if (pdfjsFilePath) { + fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); + } + } + + function getWorkerSrc() { + if (_worker_options.GlobalWorkerOptions.workerSrc) { + return _worker_options.GlobalWorkerOptions.workerSrc; + } + + if (typeof fallbackWorkerSrc !== "undefined") { + if (!_is_node.isNodeJS) { + (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + return fallbackWorkerSrc; + } + + throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + function getMainThreadWorkerMessageHandler() { + let mainWorkerMessageHandler; + + try { + mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler; + } catch (ex) {} + + return mainWorkerMessageHandler || null; + } + + function setupFakeWorkerGlobal() { + if (fakeWorkerCapability) { + return fakeWorkerCapability.promise; + } + + fakeWorkerCapability = (0, _util.createPromiseCapability)(); + + const loader = async function () { + const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler(); + + if (mainWorkerMessageHandler) { + return mainWorkerMessageHandler; + } + + if (_is_node.isNodeJS && typeof require === "function") { + const worker = eval("require")(getWorkerSrc()); + return worker.WorkerMessageHandler; + } + + await (0, _display_utils.loadScript)(getWorkerSrc()); + return window.pdfjsWorker.WorkerMessageHandler; + }; + + loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject); + return fakeWorkerCapability.promise; + } + + function createCDNWrapper(url) { + const wrapper = "importScripts('" + url + "');"; + return URL.createObjectURL(new Blob([wrapper])); + } + + class PDFWorker { + constructor({ + name = null, + port = null, + verbosity = (0, _util.getVerbosityLevel)() + } = {}) { + if (port && pdfWorkerPorts.has(port)) { + throw new Error("Cannot use more than one PDFWorker per port"); + } + + this.name = name; + this.destroyed = false; + this.postMessageTransfers = true; + this.verbosity = verbosity; + this._readyCapability = (0, _util.createPromiseCapability)(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + + if (port) { + pdfWorkerPorts.set(port, this); + + this._initializeFromPort(port); + + return; + } + + this._initialize(); + } + + get promise() { + return this._readyCapability.promise; + } + + get port() { + return this._port; + } + + get messageHandler() { + return this._messageHandler; + } + + _initializeFromPort(port) { + this._port = port; + this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); + + this._messageHandler.on("ready", function () {}); + + this._readyCapability.resolve(); + } + + _initialize() { + if (typeof Worker !== "undefined" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) { + let workerSrc = getWorkerSrc(); + + try { + if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { + workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href); + } + + const worker = new Worker(workerSrc); + const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); + + const terminateEarly = () => { + worker.removeEventListener("error", onWorkerError); + messageHandler.destroy(); + worker.terminate(); + + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + } else { + this._setupFakeWorker(); + } + }; + + const onWorkerError = () => { + if (!this._webWorker) { + terminateEarly(); + } + }; + + worker.addEventListener("error", onWorkerError); + messageHandler.on("test", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + if (data) { + this._messageHandler = messageHandler; + this._port = worker; + this._webWorker = worker; + + if (!data.supportTransfers) { + this.postMessageTransfers = false; + } + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + } else { + this._setupFakeWorker(); + + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on("ready", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + try { + sendTest(); + } catch (e) { + this._setupFakeWorker(); + } + }); + + const sendTest = () => { + const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]); + + try { + messageHandler.send("test", testObj, [testObj.buffer]); + } catch (ex) { + (0, _util.warn)("Cannot use postMessage transfers."); + testObj[0] = 0; + messageHandler.send("test", testObj); + } + }; + + sendTest(); + return; + } catch (e) { + (0, _util.info)("The worker has been disabled."); + } + } + + this._setupFakeWorker(); + } + + _setupFakeWorker() { + if (!isWorkerDisabled) { + (0, _util.warn)("Setting up fake worker."); + isWorkerDisabled = true; + } + + setupFakeWorkerGlobal().then(WorkerMessageHandler => { + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + + return; + } + + const port = new LoopbackPort(); + this._port = port; + const id = "fake" + nextFakeWorkerId++; + const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); + this._messageHandler = messageHandler; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + }).catch(reason => { + this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); + }); + } + + destroy() { + this.destroyed = true; + + if (this._webWorker) { + this._webWorker.terminate(); + + this._webWorker = null; + } + + pdfWorkerPorts.delete(this._port); + this._port = null; + + if (this._messageHandler) { + this._messageHandler.destroy(); + + this._messageHandler = null; + } + } + + static fromPort(params) { + if (!params || !params.port) { + throw new Error("PDFWorker.fromPort - invalid method signature."); + } + + if (pdfWorkerPorts.has(params.port)) { + return pdfWorkerPorts.get(params.port); + } + + return new PDFWorker(params); + } + + static getWorkerSrc() { + return getWorkerSrc(); + } + + } + + return PDFWorker; +}(); + +exports.PDFWorker = PDFWorker; + +class WorkerTransport { + constructor(messageHandler, loadingTask, networkStream, params) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader({ + docId: loadingTask.docId, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + + if (!params.useWorkerFetch) { + this.CMapReaderFactory = new params.CMapReaderFactory({ + baseUrl: params.cMapUrl, + isCompressed: params.cMapPacked + }); + this.StandardFontDataFactory = new params.StandardFontDataFactory({ + baseUrl: params.standardFontDataUrl + }); + } + + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.pageCache = []; + this.pagePromises = []; + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); + this.setupMessageHandler(); + } + + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + + this.destroyed = true; + this.destroyCapability = (0, _util.createPromiseCapability)(); + + if (this._passwordCapability) { + this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); + } + + const waitOn = []; + + for (const page of this.pageCache) { + if (page) { + waitOn.push(page._destroy()); + } + } + + this.pageCache.length = 0; + this.pagePromises.length = 0; + + if (this.hasOwnProperty("annotationStorage")) { + this.annotationStorage.resetModified(); + } + + const terminated = this.messageHandler.sendWithPromise("Terminate", null); + waitOn.push(terminated); + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); + this.fontLoader.clear(); + this._hasJSActionsPromise = null; + + if (this._networkStream) { + this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); + } + + if (this.messageHandler) { + this.messageHandler.destroy(); + this.messageHandler = null; + } + + this.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + } + + setupMessageHandler() { + const { + messageHandler, + loadingTask + } = this; + messageHandler.on("GetReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); + this._fullReader = this._networkStream.getFullReader(); + + this._fullReader.onProgress = evt => { + this._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + + sink.onPull = () => { + this._fullReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + this._fullReader.cancel(reason); + + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("ReaderHeadersReady", data => { + const headersCapability = (0, _util.createPromiseCapability)(); + const fullReader = this._fullReader; + fullReader.headersReady.then(() => { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (this._lastProgress && loadingTask.onProgress) { + loadingTask.onProgress(this._lastProgress); + } + + fullReader.onProgress = evt => { + if (loadingTask.onProgress) { + loadingTask.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + }; + } + + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }); + messageHandler.on("GetRangeReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); + + const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + + if (!rangeReader) { + sink.close(); + return; + } + + sink.onPull = () => { + rangeReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + rangeReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("GetDoc", ({ + pdfInfo + }) => { + this._numPages = pdfInfo.numPages; + this._htmlForXfa = pdfInfo.htmlForXfa; + delete pdfInfo.htmlForXfa; + + loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); + }); + messageHandler.on("DocException", function (ex) { + let reason; + + switch (ex.name) { + case "PasswordException": + reason = new _util.PasswordException(ex.message, ex.code); + break; + + case "InvalidPDFException": + reason = new _util.InvalidPDFException(ex.message); + break; + + case "MissingPDFException": + reason = new _util.MissingPDFException(ex.message); + break; + + case "UnexpectedResponseException": + reason = new _util.UnexpectedResponseException(ex.message, ex.status); + break; + + case "UnknownErrorException": + reason = new _util.UnknownErrorException(ex.message, ex.details); + break; + } + + if (!(reason instanceof Error)) { + const msg = "DocException - expected a valid Error."; + (0, _util.warn)(msg); + } + + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this._passwordCapability = (0, _util.createPromiseCapability)(); + + if (loadingTask.onPassword) { + const updatePassword = password => { + this._passwordCapability.resolve({ + password + }); + }; + + try { + loadingTask.onPassword(updatePassword, exception.code); + } catch (ex) { + this._passwordCapability.reject(ex); + } + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + + return this._passwordCapability.promise; + }); + messageHandler.on("DataLoaded", data => { + if (loadingTask.onProgress) { + loadingTask.onProgress({ + loaded: data.length, + total: data.length + }); + } + + this.downloadInfoCapability.resolve(data); + }); + messageHandler.on("StartRenderPage", data => { + if (this.destroyed) { + return; + } + + const page = this.pageCache[data.pageIndex]; + + page._startRenderPage(data.transparency, data.intent); + }); + messageHandler.on("commonobj", data => { + if (this.destroyed) { + return; + } + + const [id, type, exportedData] = data; + + if (this.commonObjs.has(id)) { + return; + } + + switch (type) { + case "Font": + const params = this._params; + + if ("error" in exportedData) { + const exportedError = exportedData.error; + (0, _util.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; + } + + let fontRegistry = null; + + if (params.pdfBug && globalThis.FontInspector?.enabled) { + fontRegistry = { + registerFont(font, url) { + globalThis.FontInspector.fontAdded(font, url); + } + + }; + } + + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + fontRegistry + }); + this.fontLoader.bind(font).catch(reason => { + return messageHandler.sendWithPromise("FontFallback", { + id + }); + }).finally(() => { + if (!params.fontExtraProperties && font.data) { + font.data = null; + } + + this.commonObjs.resolve(id, font); + }); + break; + + case "FontPath": + case "Image": + this.commonObjs.resolve(id, exportedData); + break; + + default: + throw new Error(`Got unknown common object type ${type}`); + } + }); + messageHandler.on("obj", data => { + if (this.destroyed) { + return undefined; + } + + const [id, pageIndex, type, imageData] = data; + const pageProxy = this.pageCache[pageIndex]; + + if (pageProxy.objs.has(id)) { + return undefined; + } + + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + const MAX_IMAGE_SIZE_TO_STORE = 8000000; + + if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) { + pageProxy.cleanupAfterRender = true; + } + + break; + + case "Pattern": + pageProxy.objs.resolve(id, imageData); + break; + + default: + throw new Error(`Got unknown object type ${type}`); + } + + return undefined; + }); + messageHandler.on("DocProgress", data => { + if (this.destroyed) { + return; + } + + if (loadingTask.onProgress) { + loadingTask.onProgress({ + loaded: data.loaded, + total: data.total + }); + } + }); + messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); + messageHandler.on("FetchBuiltInCMap", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.CMapReaderFactory) { + return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.CMapReaderFactory.fetch(data); + }); + messageHandler.on("FetchStandardFontData", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.StandardFontDataFactory) { + return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.StandardFontDataFactory.fetch(data); + }); + } + + _onUnsupportedFeature({ + featureId + }) { + if (this.destroyed) { + return; + } + + if (this.loadingTask.onUnsupportedFeature) { + this.loadingTask.onUnsupportedFeature(featureId); + } + } + + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + + getPage(pageNumber) { + if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { + return Promise.reject(new Error("Invalid page request")); + } + + const pageIndex = pageNumber - 1; + + if (pageIndex in this.pagePromises) { + return this.pagePromises[pageIndex]; + } + + const promise = this.messageHandler.sendWithPromise("GetPage", { + pageIndex + }).then(pageInfo => { + if (this.destroyed) { + throw new Error("Transport destroyed"); + } + + const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug); + this.pageCache[pageIndex] = page; + return page; + }); + this.pagePromises[pageIndex] = promise; + return promise; + } + + getPageIndex(ref) { + return this.messageHandler.sendWithPromise("GetPageIndex", { + ref + }).catch(function (reason) { + return Promise.reject(new Error(reason)); + }); + } + + getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise("GetAnnotations", { + pageIndex, + intent + }); + } + + saveDocument() { + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: this.annotationStorage.serializable, + filename: this._fullReader?.filename ?? null + }).finally(() => { + this.annotationStorage.resetModified(); + }); + } + + getFieldObjects() { + return this.messageHandler.sendWithPromise("GetFieldObjects", null); + } + + hasJSActions() { + return this._hasJSActionsPromise || (this._hasJSActionsPromise = this.messageHandler.sendWithPromise("HasJSActions", null)); + } + + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + + getDestinations() { + return this.messageHandler.sendWithPromise("GetDestinations", null); + } + + getDestination(id) { + if (typeof id !== "string") { + return Promise.reject(new Error("Invalid destination request.")); + } + + return this.messageHandler.sendWithPromise("GetDestination", { + id + }); + } + + getPageLabels() { + return this.messageHandler.sendWithPromise("GetPageLabels", null); + } + + getPageLayout() { + return this.messageHandler.sendWithPromise("GetPageLayout", null); + } + + getPageMode() { + return this.messageHandler.sendWithPromise("GetPageMode", null); + } + + getViewerPreferences() { + return this.messageHandler.sendWithPromise("GetViewerPreferences", null); + } + + getOpenAction() { + return this.messageHandler.sendWithPromise("GetOpenAction", null); + } + + getAttachments() { + return this.messageHandler.sendWithPromise("GetAttachments", null); + } + + getJavaScript() { + return this.messageHandler.sendWithPromise("GetJavaScript", null); + } + + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + + getStructTree(pageIndex) { + return this.messageHandler.sendWithPromise("GetStructTree", { + pageIndex + }); + } + + getOutline() { + return this.messageHandler.sendWithPromise("GetOutline", null); + } + + getOptionalContentConfig() { + return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { + return new _optional_content_config.OptionalContentConfig(results); + }); + } + + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + + getMetadata() { + return this.messageHandler.sendWithPromise("GetMetadata", null).then(results => { + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null, + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null + }; + }); + } + + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + + getStats() { + return this.messageHandler.sendWithPromise("GetStats", null); + } + + async startCleanup(keepLoadedFonts = false) { + await this.messageHandler.sendWithPromise("Cleanup", null); + + if (this.destroyed) { + return; + } + + for (let i = 0, ii = this.pageCache.length; i < ii; i++) { + const page = this.pageCache[i]; + + if (!page) { + continue; + } + + const cleanupSuccessful = page.cleanup(); + + if (!cleanupSuccessful) { + throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`); + } + } + + this.commonObjs.clear(); + + if (!keepLoadedFonts) { + this.fontLoader.clear(); + } + + this._hasJSActionsPromise = null; + } + + get loadingParams() { + const params = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch: params.disableAutoFetch + }); + } + +} + +class PDFObjects { + constructor() { + this._objs = Object.create(null); + } + + _ensureObj(objId) { + if (this._objs[objId]) { + return this._objs[objId]; + } + + return this._objs[objId] = { + capability: (0, _util.createPromiseCapability)(), + data: null, + resolved: false + }; + } + + get(objId, callback = null) { + if (callback) { + this._ensureObj(objId).capability.promise.then(callback); + + return null; + } + + const obj = this._objs[objId]; + + if (!obj || !obj.resolved) { + throw new Error(`Requesting object that isn't resolved yet ${objId}.`); + } + + return obj.data; + } + + has(objId) { + const obj = this._objs[objId]; + return obj?.resolved || false; + } + + resolve(objId, data) { + const obj = this._ensureObj(objId); + + obj.resolved = true; + obj.data = data; + obj.capability.resolve(data); + } + + clear() { + this._objs = Object.create(null); + } + +} + +class RenderTask { + constructor(internalRenderTask) { + this._internalRenderTask = internalRenderTask; + this.onContinue = null; + } + + get promise() { + return this._internalRenderTask.capability.promise; + } + + cancel() { + this._internalRenderTask.cancel(); + } + +} + +const InternalRenderTask = function InternalRenderTaskClosure() { + const canvasInRendering = new WeakSet(); + + class InternalRenderTask { + constructor({ + callback, + params, + objs, + commonObjs, + operatorList, + pageIndex, + canvasFactory, + useRequestAnimationFrame = false, + pdfBug = false + }) { + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.operatorListIdx = null; + this.operatorList = operatorList; + this._pageIndex = pageIndex; + this.canvasFactory = canvasFactory; + this._pdfBug = pdfBug; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; + this.cancelled = false; + this.capability = (0, _util.createPromiseCapability)(); + this.task = new RenderTask(this); + this._cancelBound = this.cancel.bind(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + + get completed() { + return this.capability.promise.catch(function () {}); + } + + initializeGraphics({ + transparency = false, + optionalContentConfig + }) { + if (this.cancelled) { + return; + } + + if (this._canvas) { + if (canvasInRendering.has(this._canvas)) { + throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); + } + + canvasInRendering.add(this._canvas); + } + + if (this._pdfBug && globalThis.StepperManager?.enabled) { + this.stepper = globalThis.StepperManager.create(this._pageIndex); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } + + const { + canvasContext, + viewport, + transform, + imageLayer, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + + if (this.graphicsReadyCallback) { + this.graphicsReadyCallback(); + } + } + + cancel(error = null) { + this.running = false; + this.cancelled = true; + + if (this.gfx) { + this.gfx.endDrawing(); + } + + if (this._canvas) { + canvasInRendering.delete(this._canvas); + } + + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas")); + } + + operatorListChanged() { + if (!this.graphicsReady) { + if (!this.graphicsReadyCallback) { + this.graphicsReadyCallback = this._continueBound; + } + + return; + } + + if (this.stepper) { + this.stepper.updateOperatorList(this.operatorList); + } + + if (this.running) { + return; + } + + this._continue(); + } + + _continue() { + this.running = true; + + if (this.cancelled) { + return; + } + + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + } + + _scheduleNext() { + if (this._useRequestAnimationFrame) { + window.requestAnimationFrame(() => { + this._nextBound().catch(this._cancelBound); + }); + } else { + Promise.resolve().then(this._nextBound).catch(this._cancelBound); + } + } + + async _next() { + if (this.cancelled) { + return; + } + + this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); + + if (this.operatorListIdx === this.operatorList.argsArray.length) { + this.running = false; + + if (this.operatorList.lastChunk) { + this.gfx.endDrawing(); + + if (this._canvas) { + canvasInRendering.delete(this._canvas); + } + + this.callback(); + } + } + } + + } + + return InternalRenderTask; +}(); + +const version = '2.10.377'; +exports.version = version; +const build = '156762c48'; +exports.build = build; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontLoader = exports.FontFaceObject = void 0; + +var _util = __w_pdfjs_require__(2); + +class BaseFontLoader { + constructor({ + docId, + onUnsupportedFeature, + ownerDocument = globalThis.document, + styleElement = null + }) { + if (this.constructor === BaseFontLoader) { + (0, _util.unreachable)("Cannot initialize BaseFontLoader."); + } + + this.docId = docId; + this._onUnsupportedFeature = onUnsupportedFeature; + this._document = ownerDocument; + this.nativeFontFaces = []; + this.styleElement = null; + } + + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + + this._document.fonts.add(nativeFontFace); + } + + insertRule(rule) { + let styleElement = this.styleElement; + + if (!styleElement) { + styleElement = this.styleElement = this._document.createElement("style"); + styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`; + + this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement); + } + + const styleSheet = styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + + this.nativeFontFaces.length = 0; + + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + + async bind(font) { + if (font.attached || font.missingFile) { + return; + } + + font.attached = true; + + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + + try { + await nativeFontFace.loaded; + } catch (ex) { + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative + }); + + (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); + font.disableFontFace = true; + throw ex; + } + } + + return; + } + + const rule = font.createFontFaceRule(); + + if (rule) { + this.insertRule(rule); + + if (this.isSyncFontLoadingSupported) { + return; + } + + await new Promise(resolve => { + const request = this._queueLoadingCallback(resolve); + + this._prepareFontLoadEvent([rule], [font], request); + }); + } + } + + _queueLoadingCallback(callback) { + (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); + } + + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + + get isSyncFontLoadingSupported() { + (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); + } + + get _loadTestFont() { + (0, _util.unreachable)("Abstract method `_loadTestFont`."); + } + + _prepareFontLoadEvent(rules, fontsToLoad, request) { + (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); + } + +} + +let FontLoader; +exports.FontLoader = FontLoader; +{ + exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader { + constructor(params) { + super(params); + this.loadingContext = { + requests: [], + nextRequestId: 0 + }; + this.loadTestFontId = 0; + } + + get isSyncFontLoadingSupported() { + let supported = false; + + if (typeof navigator === "undefined") { + supported = true; + } else { + const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + + if (m?.[1] >= 14) { + supported = true; + } + } + + return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); + } + + _queueLoadingCallback(callback) { + function completeRequest() { + (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + + while (context.requests.length > 0 && context.requests[0].done) { + const otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + + const context = this.loadingContext; + const request = { + id: `pdfjs-font-loading-${context.nextRequestId++}`, + done: false, + complete: completeRequest, + callback + }; + context.requests.push(request); + return request; + } + + get _loadTestFont() { + const getLoadTestFont = function () { + return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); + }; + + return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); + } + + _prepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + + function spliceString(s, offset, remove, insert) { + const chunk1 = s.substring(0, offset); + const chunk2 = s.substring(offset + remove); + return chunk1 + insert + chunk2; + } + + let i, ii; + + const canvas = this._document.createElement("canvas"); + + canvas.width = 1; + canvas.height = 1; + const ctx = canvas.getContext("2d"); + let called = 0; + + function isFontReady(name, callback) { + called++; + + if (called > 30) { + (0, _util.warn)("Load test font never loaded."); + callback(); + return; + } + + ctx.font = "30px " + name; + ctx.fillText(".", 0, 20); + const imageData = ctx.getImageData(0, 0, 1, 1); + + if (imageData.data[3] > 0) { + callback(); + return; + } + + setTimeout(isFontReady.bind(null, name, callback)); + } + + const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; + let data = this._loadTestFont; + const COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + const CFF_CHECKSUM_OFFSET = 16; + const XXXX_VALUE = 0x58585858; + let checksum = int32(data, CFF_CHECKSUM_OFFSET); + + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; + } + + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + const names = []; + + for (const font of fonts) { + names.push(font.loadedName); + } + + names.push(loadTestFontId); + + const div = this._document.createElement("div"); + + div.style.visibility = "hidden"; + div.style.width = div.style.height = "10px"; + div.style.position = "absolute"; + div.style.top = div.style.left = "0px"; + + for (const name of names) { + const span = this._document.createElement("span"); + + span.textContent = "Hi"; + span.style.fontFamily = name; + div.appendChild(span); + } + + this._document.body.appendChild(div); + + isFontReady(loadTestFontId, () => { + this._document.body.removeChild(div); + + request.complete(); + }); + } + + }; +} + +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + onUnsupportedFeature, + fontRegistry = null + }) { + this.compiledGlyphs = Object.create(null); + + for (const i in translatedData) { + this[i] = translatedData[i]; + } + + this.isEvalSupported = isEvalSupported !== false; + this.disableFontFace = disableFontFace === true; + this.ignoreErrors = ignoreErrors === true; + this._onUnsupportedFeature = onUnsupportedFeature; + this.fontRegistry = fontRegistry; + } + + createNativeFontFace() { + if (!this.data || this.disableFontFace) { + return null; + } + + let nativeFontFace; + + if (!this.cssFontInfo) { + nativeFontFace = new FontFace(this.loadedName, this.data, {}); + } else { + const css = { + weight: this.cssFontInfo.fontWeight + }; + + if (this.cssFontInfo.italicAngle) { + css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; + } + + nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this); + } + + return nativeFontFace; + } + + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + + const data = (0, _util.bytesToString)(this.data); + const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + let rule; + + if (!this.cssFontInfo) { + rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; + } else { + let css = `font-weight: ${this.cssFontInfo.fontWeight};`; + + if (this.cssFontInfo.italicAngle) { + css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; + } + + rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this, url); + } + + return rule; + } + + getPathGenerator(objs, character) { + if (this.compiledGlyphs[character] !== undefined) { + return this.compiledGlyphs[character]; + } + + let cmds; + + try { + cmds = objs.get(this.loadedName + "_path_" + character); + } catch (ex) { + if (!this.ignoreErrors) { + throw ex; + } + + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath + }); + + (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + + if (this.isEvalSupported && _util.IsEvalSupportedCached.value) { + const jsBuf = []; + + for (const current of cmds) { + const args = current.args !== undefined ? current.args.join(",") : ""; + jsBuf.push("c.", current.cmd, "(", args, ");\n"); + } + + return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); + } + + return this.compiledGlyphs[character] = function (c, size) { + for (const current of cmds) { + if (current.cmd === "scale") { + current.args = [size, -size]; + } + + c[current.cmd].apply(c, current.args); + } + }; + } + +} + +exports.FontFaceObject = FontFaceObject; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0; + +var _base_factory = __w_pdfjs_require__(5); + +var _is_node = __w_pdfjs_require__(4); + +var _util = __w_pdfjs_require__(2); + +let NodeCanvasFactory = class { + constructor() { + (0, _util.unreachable)("Not implemented: NodeCanvasFactory"); + } + +}; +exports.NodeCanvasFactory = NodeCanvasFactory; +let NodeCMapReaderFactory = class { + constructor() { + (0, _util.unreachable)("Not implemented: NodeCMapReaderFactory"); + } + +}; +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; +let NodeStandardFontDataFactory = class { + constructor() { + (0, _util.unreachable)("Not implemented: NodeStandardFontDataFactory"); + } + +}; +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; + +if (_is_node.isNodeJS) { + const fetchData = function (url) { + return new Promise((resolve, reject) => { + const fs = require("fs"); + + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + + resolve(new Uint8Array(data)); + }); + }); + }; + + exports.NodeCanvasFactory = NodeCanvasFactory = class extends _base_factory.BaseCanvasFactory { + _createCanvas(width, height) { + const Canvas = require("canvas"); + + return Canvas.createCanvas(width, height); + } + + }; + exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } + + }; + exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory = class extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } + + }; +} + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationStorage = void 0; + +var _util = __w_pdfjs_require__(2); + +class AnnotationStorage { + constructor() { + this._storage = new Map(); + this._modified = false; + this.onSetModified = null; + this.onResetModified = null; + } + + getValue(key, defaultValue) { + const obj = this._storage.get(key); + + return obj !== undefined ? obj : defaultValue; + } + + setValue(key, value) { + const obj = this._storage.get(key); + + let modified = false; + + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + this._storage.set(key, value); + + modified = true; + } + + if (modified) { + this._setModified(); + } + } + + getAll() { + return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; + } + + get size() { + return this._storage.size; + } + + _setModified() { + if (!this._modified) { + this._modified = true; + + if (typeof this.onSetModified === "function") { + this.onSetModified(); + } + } + } + + resetModified() { + if (this._modified) { + this._modified = false; + + if (typeof this.onResetModified === "function") { + this.onResetModified(); + } + } + } + + get serializable() { + return this._storage.size > 0 ? this._storage : null; + } + +} + +exports.AnnotationStorage = AnnotationStorage; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CanvasGraphics = void 0; + +var _util = __w_pdfjs_require__(2); + +var _pattern_helper = __w_pdfjs_require__(11); + +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const COMPILE_TYPE3_GLYPHS = true; +const MAX_SIZE_TO_COMPILE = 1000; +const FULL_CHUNK_HEIGHT = 16; +const LINEWIDTH_SCALE_FACTOR = 1.000001; + +function addContextCurrentTransform(ctx) { + if (ctx.mozCurrentTransform) { + return; + } + + ctx._originalSave = ctx.save; + ctx._originalRestore = ctx.restore; + ctx._originalRotate = ctx.rotate; + ctx._originalScale = ctx.scale; + ctx._originalTranslate = ctx.translate; + ctx._originalTransform = ctx.transform; + ctx._originalSetTransform = ctx.setTransform; + ctx._originalResetTransform = ctx.resetTransform; + ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; + ctx._transformStack = []; + + try { + const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth"); + ctx._setLineWidth = desc.set; + ctx._getLineWidth = desc.get; + Object.defineProperty(ctx, "lineWidth", { + set: function setLineWidth(width) { + this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR); + }, + get: function getLineWidth() { + return this._getLineWidth(); + } + }); + } catch (_) {} + + Object.defineProperty(ctx, "mozCurrentTransform", { + get: function getCurrentTransform() { + return this._transformMatrix; + } + }); + Object.defineProperty(ctx, "mozCurrentTransformInverse", { + get: function getCurrentTransformInverse() { + const [a, b, c, d, e, f] = this._transformMatrix; + const ad_bc = a * d - b * c; + const bc_ad = b * c - a * d; + return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; + } + }); + + ctx.save = function ctxSave() { + const old = this._transformMatrix; + + this._transformStack.push(old); + + this._transformMatrix = old.slice(0, 6); + + this._originalSave(); + }; + + ctx.restore = function ctxRestore() { + const prev = this._transformStack.pop(); + + if (prev) { + this._transformMatrix = prev; + + this._originalRestore(); + } + }; + + ctx.translate = function ctxTranslate(x, y) { + const m = this._transformMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + + this._originalTranslate(x, y); + }; + + ctx.scale = function ctxScale(x, y) { + const m = this._transformMatrix; + m[0] *= x; + m[1] *= x; + m[2] *= y; + m[3] *= y; + + this._originalScale(x, y); + }; + + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + const m = this._transformMatrix; + this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; + + ctx._originalTransform(a, b, c, d, e, f); + }; + + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + this._transformMatrix = [a, b, c, d, e, f]; + + ctx._originalSetTransform(a, b, c, d, e, f); + }; + + ctx.resetTransform = function ctxResetTransform() { + this._transformMatrix = [1, 0, 0, 1, 0, 0]; + + ctx._originalResetTransform(); + }; + + ctx.rotate = function ctxRotate(angle) { + const cosValue = Math.cos(angle); + const sinValue = Math.sin(angle); + const m = this._transformMatrix; + this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; + + this._originalRotate(angle); + }; +} + +class CachedCanvases { + constructor(canvasFactory) { + this.canvasFactory = canvasFactory; + this.cache = Object.create(null); + } + + getCanvas(id, width, height, trackTransform) { + let canvasEntry; + + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; + } + + if (trackTransform) { + addContextCurrentTransform(canvasEntry.context); + } + + return canvasEntry; + } + + clear() { + for (const id in this.cache) { + const canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } + +} + +function compileType3Glyph(imgData) { + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width = imgData.width, + height = imgData.height, + width1 = width + 1; + let i, ii, j, j0; + const points = new Uint8Array(width1 * (height + 1)); + const lineSize = width + 7 & ~7, + data0 = imgData.data; + const data = new Uint8Array(lineSize * height); + let pos = 0; + + for (i = 0, ii = data0.length; i < ii; i++) { + const elem = data0[i]; + let mask = 128; + + while (mask > 0) { + data[pos++] = elem & mask ? 0 : 255; + mask >>= 1; + } + } + + let count = 0; + pos = 0; + + if (data[pos] !== 0) { + points[0] = 1; + ++count; + } + + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j] = data[pos] ? 2 : 1; + ++count; + } + + pos++; + } + + if (data[pos] !== 0) { + points[j] = 2; + ++count; + } + + for (i = 1; i < height; i++) { + pos = i * lineSize; + j0 = i * width1; + + if (data[pos - lineSize] !== data[pos]) { + points[j0] = data[pos] ? 1 : 8; + ++count; + } + + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + + for (j = 1; j < width; j++) { + sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); + + if (POINT_TYPES[sum]) { + points[j0 + j] = POINT_TYPES[sum]; + ++count; + } + + pos++; + } + + if (data[pos - lineSize] !== data[pos]) { + points[j0 + j] = data[pos] ? 2 : 4; + ++count; + } + + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + } + + pos = lineSize * (height - 1); + j0 = i * width1; + + if (data[pos] !== 0) { + points[j0] = 8; + ++count; + } + + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j0 + j] = data[pos] ? 4 : 8; + ++count; + } + + pos++; + } + + if (data[pos] !== 0) { + points[j0 + j] = 4; + ++count; + } + + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const outlines = []; + + for (i = 0; count && i <= height; i++) { + let p = i * width1; + const end = p + width; + + while (p < end && !points[p]) { + p++; + } + + if (p === end) { + continue; + } + + const coords = [p % width1, i]; + const p0 = p; + let type = points[p]; + + do { + const step = steps[type]; + + do { + p += step; + } while (!points[p]); + + const pp = points[p]; + + if (pp !== 5 && pp !== 10) { + type = pp; + points[p] = 0; + } else { + type = pp & 0x33 * type >> 4; + points[p] &= type >> 2 | type << 2; + } + + coords.push(p % width1, p / width1 | 0); + + if (!points[p]) { + --count; + } + } while (p0 !== p); + + outlines.push(coords); + --i; + } + + const drawOutline = function (c) { + c.save(); + c.scale(1 / width, -1 / height); + c.translate(0, -height); + c.beginPath(); + + for (let k = 0, kk = outlines.length; k < kk; k++) { + const o = outlines[k]; + c.moveTo(o[0], o[1]); + + for (let l = 2, ll = o.length; l < ll; l += 2) { + c.lineTo(o[l], o[l + 1]); + } + } + + c.fill(); + c.beginPath(); + c.restore(); + }; + + return drawOutline; +} + +class CanvasExtraState { + constructor() { + this.alphaIsShape = false; + this.fontSize = 0; + this.fontSizeScale = 1; + this.textMatrix = _util.IDENTITY_MATRIX; + this.textMatrixScale = 1; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textRise = 0; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; + this.patternFill = false; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.activeSMask = null; + this.resumeSMaskCtx = null; + this.transferMaps = null; + } + + clone() { + return Object.create(this); + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + +} + +const CanvasGraphics = function CanvasGraphicsClosure() { + const EXECUTION_TIME = 15; + const EXECUTION_STEPS = 10; + + function putBinaryImageData(ctx, imgData, transferMaps = null) { + if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, + destPos; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; + let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; + + if (transferMaps) { + switch (transferMaps.length) { + case 1: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[0]; + transferMapBlue = transferMaps[0]; + transferMapGray = transferMaps[0]; + break; + + case 4: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[1]; + transferMapBlue = transferMaps[2]; + transferMapGray = transferMaps[3]; + break; + } + } + + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + let white = 0xffffffff; + let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff; + + if (transferMapGray) { + if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { + [white, black] = [black, white]; + } + } + + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + + for (j = 0; j < thisChunkHeight; j++) { + const srcDiff = srcLength - srcPos; + let k = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; + + for (; k < kEndUnrolled; k += 8) { + srcByte = src[srcPos++]; + dest32[destPos++] = srcByte & 128 ? white : black; + dest32[destPos++] = srcByte & 64 ? white : black; + dest32[destPos++] = srcByte & 32 ? white : black; + dest32[destPos++] = srcByte & 16 ? white : black; + dest32[destPos++] = srcByte & 8 ? white : black; + dest32[destPos++] = srcByte & 4 ? white : black; + dest32[destPos++] = srcByte & 2 ? white : black; + dest32[destPos++] = srcByte & 1 ? white : black; + } + + for (; k < kEnd; k++) { + if (mask === 0) { + srcByte = src[srcPos++]; + mask = 128; + } + + dest32[destPos++] = srcByte & mask ? white : black; + mask >>= 1; + } + } + + while (destPos < dest32DataLength) { + dest32[destPos++] = 0; + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + thisChunkHeight = FULL_CHUNK_HEIGHT; + elemsInThisChunk = width * thisChunkHeight; + + for (i = 0; i < totalChunks; i++) { + if (i >= fullChunks) { + thisChunkHeight = partialChunkHeight; + elemsInThisChunk = width * thisChunkHeight; + } + + destPos = 0; + + for (j = elemsInThisChunk; j--;) { + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = 255; + } + + if (hasTransferMaps) { + for (let k = 0; k < destPos; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error(`bad image kind: ${imgData.kind}`); + } + } + + function putBinaryImageMask(ctx, imgData) { + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + let destPos = 3; + + for (let j = 0; j < thisChunkHeight; j++) { + let elem, + mask = 0; + + for (let k = 0; k < width; k++) { + if (!mask) { + elem = src[srcPos++]; + mask = 128; + } + + dest[destPos] = elem & mask ? 0 : 255; + destPos += 4; + mask >>= 1; + } + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } + + function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; + + for (let i = 0, ii = properties.length; i < ii; i++) { + const property = properties[i]; + + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } + } + + function resetCtxToDefault(ctx) { + ctx.strokeStyle = "#000000"; + ctx.fillStyle = "#000000"; + ctx.fillRule = "nonzero"; + ctx.globalAlpha = 1; + ctx.lineWidth = 1; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 10; + ctx.globalCompositeOperation = "source-over"; + ctx.font = "10px sans-serif"; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash([]); + ctx.lineDashOffset = 0; + } + } + + function composeSMaskBackdrop(bytes, r0, g0, b0) { + const length = bytes.length; + + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; + + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + const alpha_ = 255 - alpha; + bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; + bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; + bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; + } + } + } + + function composeSMaskAlpha(maskData, layerData, transferMap) { + const length = maskData.length; + const scale = 1 / 255; + + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } + } + + function composeSMaskLuminosity(maskData, layerData, transferMap) { + const length = maskData.length; + + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; + } + } + + function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) { + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; + + if (subtype === "Luminosity") { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(0, row, width, chunkHeight); + const layerData = layerCtx.getImageData(0, row, width, chunkHeight); + + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + + composeFn(maskData.data, layerData.data, transferMap); + maskCtx.putImageData(layerData, 0, row); + } + } + + function composeSMask(ctx, smask, layerCtx) { + const mask = smask.canvas; + const maskCtx = smask.context; + ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); + genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, smask.backdrop, smask.transferMap); + ctx.drawImage(mask, 0, 0); + } + + const LINE_CAP_STYLES = ["butt", "round", "square"]; + const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; + const NORMAL_CLIP = {}; + const EO_CLIP = {}; + + class CanvasGraphics { + constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig) { + this.ctx = canvasCtx; + this.current = new CanvasExtraState(); + this.stateStack = []; + this.pendingClip = null; + this.pendingEOFill = false; + this.res = null; + this.xobjs = null; + this.commonObjs = commonObjs; + this.objs = objs; + this.canvasFactory = canvasFactory; + this.imageLayer = imageLayer; + this.groupStack = []; + this.processingType3 = null; + this.baseTransform = null; + this.baseTransformStack = []; + this.groupLevel = 0; + this.smaskStack = []; + this.smaskCounter = 0; + this.tempSMask = null; + this.contentVisible = true; + this.markedContentStack = []; + this.optionalContentConfig = optionalContentConfig; + this.cachedCanvases = new CachedCanvases(this.canvasFactory); + this.cachedPatterns = new Map(); + + if (canvasCtx) { + addContextCurrentTransform(canvasCtx); + } + + this._cachedGetSinglePixelWidth = null; + } + + beginDrawing({ + transform, + viewport, + transparency = false, + background = null + }) { + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + this.ctx.save(); + this.ctx.fillStyle = background || "rgb(255, 255, 255)"; + this.ctx.fillRect(0, 0, width, height); + this.ctx.restore(); + + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; + this.ctx.save(); + this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); + } + + this.ctx.save(); + resetCtxToDefault(this.ctx); + + if (transform) { + this.ctx.transform.apply(this.ctx, transform); + } + + this.ctx.transform.apply(this.ctx, viewport.transform); + this.baseTransform = this.ctx.mozCurrentTransform.slice(); + this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]); + + if (this.imageLayer) { + this.imageLayer.beginLayout(); + } + } + + executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; + + if (argsArrayLen === i) { + return i; + } + + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; + + while (true) { + if (stepper !== undefined && i === stepper.nextBreakPoint) { + stepper.breakIt(i, continueCallback); + return i; + } + + fnId = fnArray[i]; + + if (fnId !== _util.OPS.dependency) { + this[fnId].apply(this, argsArray[i]); + } else { + for (const depObjId of argsArray[i]) { + const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; + + if (!objsPool.has(depObjId)) { + objsPool.get(depObjId, continueCallback); + return i; + } + } + } + + i++; + + if (i === argsArrayLen) { + return i; + } + + if (chunkOperations && ++steps > EXECUTION_STEPS) { + if (Date.now() > endTime) { + continueCallback(); + return i; + } + + steps = 0; + } + } + } + + endDrawing() { + while (this.stateStack.length || this.current.activeSMask !== null) { + this.restore(); + } + + this.ctx.restore(); + + if (this.transparentCanvas) { + this.ctx = this.compositeCtx; + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.drawImage(this.transparentCanvas, 0, 0); + this.ctx.restore(); + this.transparentCanvas = null; + } + + this.cachedCanvases.clear(); + this.cachedPatterns.clear(); + + if (this.imageLayer) { + this.imageLayer.endLayout(); + } + } + + _scaleImage(img, inverseTransform) { + const width = img.width; + const height = img.height; + let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); + let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); + let paintWidth = width, + paintHeight = height; + let tmpCanvasId = "prescale1"; + let tmpCanvas, tmpCtx; + + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + let newWidth = paintWidth, + newHeight = paintHeight; + + if (widthScale > 2 && paintWidth > 1) { + newWidth = Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + + if (heightScale > 2 && paintHeight > 1) { + newHeight = Math.ceil(paintHeight / 2); + heightScale /= paintHeight / newHeight; + } + + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); + tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, newWidth, newHeight); + tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + img = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; + } + + return { + img, + paintWidth, + paintHeight + }; + } + + _createMaskCanvas(img) { + const ctx = this.ctx; + const width = img.width, + height = img.height; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; + putBinaryImageMask(maskCtx, img); + const objToCanvas = ctx.mozCurrentTransform; + + let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]); + + maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); + + const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); + + const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); + + const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); + + const drawnWidth = Math.ceil(rect[2] - rect[0]); + const drawnHeight = Math.ceil(rect[3] - rect[1]); + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true); + const fillCtx = fillCanvas.context; + const offsetX = Math.min(cord1[0], cord2[0]); + const offsetY = Math.min(cord1[1], cord2[1]); + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform.apply(fillCtx, maskToCanvas); + + const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse); + + fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + + const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]); + + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, false) : fillColor; + fillCtx.fillRect(0, 0, width, height); + return { + canvas: fillCanvas.canvas, + offsetX: Math.round(offsetX), + offsetY: Math.round(offsetY) + }; + } + + setLineWidth(width) { + this.current.lineWidth = width; + this.ctx.lineWidth = width; + } + + setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.ctx.miterLimit = limit; + } + + setDash(dashArray, dashPhase) { + const ctx = this.ctx; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (let i = 0, ii = states.length; i < ii; i++) { + const state = states[i]; + const key = state[0]; + const value = state[1]; + + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value[0], value[1]); + break; + + case "CA": + this.current.strokeAlpha = state[1]; + break; + + case "ca": + this.current.fillAlpha = state[1]; + this.ctx.globalAlpha = state[1]; + break; + + case "BM": + this.ctx.globalCompositeOperation = value; + break; + + case "SMask": + if (this.current.activeSMask) { + if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) { + this.suspendSMaskGroup(); + } else { + this.endSMaskGroup(); + } + } + + this.current.activeSMask = value ? this.tempSMask : null; + + if (this.current.activeSMask) { + this.beginSMaskGroup(); + } + + this.tempSMask = null; + break; + + case "TR": + this.current.transferMaps = value; + } + } + } + + beginSMaskGroup() { + const activeSMask = this.current.activeSMask; + const drawnWidth = activeSMask.canvas.width; + const drawnHeight = activeSMask.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + const currentCtx = this.ctx; + const currentTransform = currentCtx.mozCurrentTransform; + this.ctx.save(); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); + groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); + groupCtx.transform.apply(groupCtx, currentTransform); + activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse; + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + } + + suspendSMaskGroup() { + const groupCtx = this.ctx; + this.groupLevel--; + this.ctx = this.groupStack.pop(); + composeSMask(this.ctx, this.current.activeSMask, groupCtx); + this.ctx.restore(); + this.ctx.save(); + copyCtxState(groupCtx, this.ctx); + this.current.resumeSMaskCtx = groupCtx; + + const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + + this.ctx.transform.apply(this.ctx, deltaTransform); + groupCtx.save(); + groupCtx.setTransform(1, 0, 0, 1, 0, 0); + groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height); + groupCtx.restore(); + } + + resumeSMaskGroup() { + const groupCtx = this.current.resumeSMaskCtx; + const currentCtx = this.ctx; + this.ctx = groupCtx; + this.groupStack.push(currentCtx); + this.groupLevel++; + } + + endSMaskGroup() { + const groupCtx = this.ctx; + this.groupLevel--; + this.ctx = this.groupStack.pop(); + composeSMask(this.ctx, this.current.activeSMask, groupCtx); + this.ctx.restore(); + copyCtxState(groupCtx, this.ctx); + + const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + + this.ctx.transform.apply(this.ctx, deltaTransform); + } + + save() { + this.ctx.save(); + const old = this.current; + this.stateStack.push(old); + this.current = old.clone(); + this.current.resumeSMaskCtx = null; + } + + restore() { + if (this.current.resumeSMaskCtx) { + this.resumeSMaskGroup(); + } + + if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) { + this.endSMaskGroup(); + } + + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + this.ctx.restore(); + this.pendingClip = null; + this._cachedGetSinglePixelWidth = null; + } else { + this.current.activeSMask = null; + } + } + + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedGetSinglePixelWidth = null; + } + + constructPath(ops, args) { + const ctx = this.ctx; + const current = this.current; + let x = current.x, + y = current.y; + + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); + + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); + } + + ctx.closePath(); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + break; + + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + j += 6; + break; + + case _util.OPS.curveTo2: + ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + j += 4; + break; + + case _util.OPS.closePath: + ctx.closePath(); + break; + } + } + + current.setCurrentPoint(x, y); + } + + closePath() { + this.ctx.closePath(); + } + + stroke(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; + ctx.globalAlpha = this.current.strokeAlpha; + + if (this.contentVisible) { + if (typeof strokeColor === "object" && strokeColor?.getPattern) { + const lineWidth = this.getSinglePixelWidth(); + ctx.save(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse); + ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth); + ctx.stroke(); + ctx.restore(); + } else { + const lineWidth = this.getSinglePixelWidth(); + + if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) { + ctx.save(); + ctx.resetTransform(); + ctx.lineWidth = Math.round(this._combinedScaleFactor); + ctx.stroke(); + ctx.restore(); + } else { + ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth); + ctx.stroke(); + } + } + } + + if (consumePath) { + this.consumePath(); + } + + ctx.globalAlpha = this.current.fillAlpha; + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + fill(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; + + if (isPatternFill) { + ctx.save(); + ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse); + needRestore = true; + } + + if (this.contentVisible) { + if (this.pendingEOFill) { + ctx.fill("evenodd"); + this.pendingEOFill = false; + } else { + ctx.fill(); + } + } + + if (needRestore) { + ctx.restore(); + } + + if (consumePath) { + this.consumePath(); + } + } + + eoFill() { + this.pendingEOFill = true; + this.fill(); + } + + fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + } + + eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + } + + endPath() { + this.consumePath(); + } + + clip() { + this.pendingClip = NORMAL_CLIP; + } + + eoClip() { + this.pendingClip = EO_CLIP; + } + + beginText() { + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.textMatrixScale = 1; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + endText() { + const paths = this.pendingTextPaths; + const ctx = this.ctx; + + if (paths === undefined) { + ctx.beginPath(); + return; + } + + ctx.save(); + ctx.beginPath(); + + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + ctx.setTransform.apply(ctx, path.transform); + ctx.translate(path.x, path.y); + path.addToPath(ctx, path.fontSize); + } + + ctx.restore(); + ctx.clip(); + ctx.beginPath(); + delete this.pendingTextPaths; + } + + setCharSpacing(spacing) { + this.current.charSpacing = spacing; + } + + setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setFont(fontRefName, size) { + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; + + if (!fontObj) { + throw new Error(`Can't find font for ${fontRefName}`); + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + + if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { + (0, _util.warn)("Invalid font matrix for font " + fontRefName); + } + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + this.current.font = fontObj; + this.current.fontSize = size; + + if (fontObj.isType3Font) { + return; + } + + const name = fontObj.loadedName || "sans-serif"; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + const typeface = `"${name}", ${fontObj.fallbackName}`; + let browserFontSize = size; + + if (size < MIN_FONT_SIZE) { + browserFontSize = MIN_FONT_SIZE; + } else if (size > MAX_FONT_SIZE) { + browserFontSize = MAX_FONT_SIZE; + } + + this.current.fontSizeScale = size / browserFontSize; + this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; + } + + setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + } + + setTextRise(rise) { + this.current.textRise = rise; + } + + moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.hypot(a, b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + paintChar(character, x, y, patternTransform, resetLineWidthToOne) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + const patternFill = current.patternFill && !font.missingFile; + let addToPath; + + if (font.disableFontFace || isAddToPathSet || patternFill) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + + if (font.disableFontFace || patternFill) { + ctx.save(); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + + if (patternTransform) { + ctx.setTransform.apply(ctx, patternTransform); + } + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (resetLineWidthToOne) { + ctx.resetTransform(); + ctx.lineWidth = Math.round(this._combinedScaleFactor); + } + + ctx.stroke(); + } + + ctx.restore(); + } else { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fillText(character, x, y); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (resetLineWidthToOne) { + ctx.save(); + ctx.moveTo(x, y); + ctx.resetTransform(); + ctx.lineWidth = Math.round(this._combinedScaleFactor); + ctx.strokeText(character, 0, 0); + ctx.restore(); + } else { + ctx.strokeText(character, x, y); + } + } + } + + if (isAddToPathSet) { + const paths = this.pendingTextPaths || (this.pendingTextPaths = []); + paths.push({ + transform: ctx.mozCurrentTransform, + x, + y, + fontSize, + addToPath + }); + } + } + + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10); + ctx.scale(1.5, 1); + ctx.fillText("I", 0, 10); + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; + + for (let i = 3; i < data.length; i += 4) { + if (data[i] > 0 && data[i] < 255) { + enabled = true; + break; + } + } + + return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + + if (font.isType3Font) { + return this.showType3Text(glyphs); + } + + const fontSize = current.fontSize; + + if (fontSize === 0) { + return undefined; + } + + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + ctx.save(); + let patternTransform; + + if (current.patternFill) { + ctx.save(); + const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse); + patternTransform = ctx.mozCurrentTransform; + ctx.restore(); + ctx.fillStyle = pattern; + } + + ctx.transform.apply(ctx, current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); + + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } + + let lineWidth = current.lineWidth; + let resetLineWidthToOne = false; + const scale = current.textMatrixScale; + + if (scale === 0 || lineWidth === 0) { + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + this._cachedGetSinglePixelWidth = null; + lineWidth = this.getSinglePixelWidth(); + resetLineWidthToOne = lineWidth < 0; + } + } else { + lineWidth /= scale; + } + + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + + ctx.lineWidth = lineWidth; + let x = 0, + i; + + for (i = 0; i < glyphsLength; ++i) { + const glyph = glyphs[i]; + + if ((0, _util.isNum)(glyph)) { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (font.remeasure && width > 0) { + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + const characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } + } + + if (this.contentVisible && (glyph.isInFont || font.missingFile)) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne); + + if (accent) { + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne); + } + } + } + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + + if (restoreNeeded) { + ctx.restore(); + } + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + ctx.restore(); + return undefined; + } + + showType3Text(glyphs) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; + + if (isTextInvisible || fontSize === 0) { + return; + } + + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.translate(current.x, current.y); + ctx.scale(textHScale, fontDirection); + + for (i = 0; i < glyphsLength; ++i) { + glyph = glyphs[i]; + + if ((0, _util.isNum)(glyph)) { + spacingLength = spacingDir * glyph * fontSize / 1000; + this.ctx.translate(spacingLength, 0); + current.x += spacingLength * textHScale; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; + + if (!operatorList) { + (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); + continue; + } + + if (this.contentVisible) { + this.processingType3 = glyph; + this.save(); + ctx.scale(fontSize, fontSize); + ctx.transform.apply(ctx, fontMatrix); + this.executeOperatorList(operatorList); + this.restore(); + } + + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + + width = transformed[0] * fontSize + spacing; + ctx.translate(width, 0); + current.x += width * textHScale; + } + + ctx.restore(); + this.processingType3 = null; + } + + setCharWidth(xWidth, yWidth) {} + + setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.clip(); + this.endPath(); + } + + getColorN_Pattern(IR) { + let pattern; + + if (IR[0] === "TilingPattern") { + const color = IR[1]; + const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory); + } + }; + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + } else { + pattern = this._getPattern(IR[1]); + } + + return pattern; + } + + setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + } + + setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + } + + setStrokeRGBColor(r, g, b) { + const color = _util.Util.makeHexColor(r, g, b); + + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + + setFillRGBColor(r, g, b) { + const color = _util.Util.makeHexColor(r, g, b); + + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + } + + _getPattern(objId) { + if (this.cachedPatterns.has(objId)) { + return this.cachedPatterns.get(objId); + } + + const pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId)); + this.cachedPatterns.set(objId, pattern); + return pattern; + } + + shadingFill(objId) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + this.save(); + + const pattern = this._getPattern(objId); + + ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, true); + const inv = ctx.mozCurrentTransformInverse; + + if (inv) { + const canvas = ctx.canvas; + const width = canvas.width; + const height = canvas.height; + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); + } else { + this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); + } + + this.restore(); + } + + beginInlineImage() { + (0, _util.unreachable)("Should not call beginInlineImage"); + } + + beginImageData() { + (0, _util.unreachable)("Should not call beginImageData"); + } + + paintFormXObjectBegin(matrix, bbox) { + if (!this.contentVisible) { + return; + } + + this.save(); + this.baseTransformStack.push(this.baseTransform); + + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform.apply(this, matrix); + } + + this.baseTransform = this.ctx.mozCurrentTransform; + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.clip(); + this.endPath(); + } + } + + paintFormXObjectEnd() { + if (!this.contentVisible) { + return; + } + + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + } + + beginGroup(group) { + if (!this.contentVisible) { + return; + } + + this.save(); + const currentCtx = this.ctx; + + if (!group.isolated) { + (0, _util.info)("TODO: Support non-isolated groups."); + } + + if (group.knockout) { + (0, _util.warn)("Knockout groups not supported."); + } + + const currentTransform = currentCtx.mozCurrentTransform; + + if (group.matrix) { + currentCtx.transform.apply(currentCtx, group.matrix); + } + + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, + scaleY = 1; + + if (drawnWidth > MAX_GROUP_SIZE) { + scaleX = drawnWidth / MAX_GROUP_SIZE; + drawnWidth = MAX_GROUP_SIZE; + } + + if (drawnHeight > MAX_GROUP_SIZE) { + scaleY = drawnHeight / MAX_GROUP_SIZE; + drawnHeight = MAX_GROUP_SIZE; + } + + let cacheId = "groupAt" + this.groupLevel; + + if (group.smask) { + cacheId += "_smask_" + this.smaskCounter++ % 2; + } + + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform.apply(groupCtx, currentTransform); + + if (group.smask) { + this.smaskStack.push({ + canvas: scratchCanvas.canvas, + context: groupCtx, + offsetX, + offsetY, + scaleX, + scaleY, + subtype: group.smask.subtype, + backdrop: group.smask.backdrop, + transferMap: group.smask.transferMap || null, + startTransformInverse: null + }); + } else { + currentCtx.setTransform(1, 0, 0, 1, 0, 0); + currentCtx.translate(offsetX, offsetY); + currentCtx.scale(scaleX, scaleY); + } + + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + this.current.activeSMask = null; + } + + endGroup(group) { + if (!this.contentVisible) { + return; + } + + this.groupLevel--; + const groupCtx = this.ctx; + this.ctx = this.groupStack.pop(); + + if (this.ctx.imageSmoothingEnabled !== undefined) { + this.ctx.imageSmoothingEnabled = false; + } else { + this.ctx.mozImageSmoothingEnabled = false; + } + + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); + } else { + this.ctx.drawImage(groupCtx.canvas, 0, 0); + } + + this.restore(); + } + + beginAnnotations() { + this.save(); + + if (this.baseTransform) { + this.ctx.setTransform.apply(this.ctx, this.baseTransform); + } + } + + endAnnotations() { + this.restore(); + } + + beginAnnotation(id, rect, transform, matrix) { + this.save(); + resetCtxToDefault(this.ctx); + this.current = new CanvasExtraState(); + + if (Array.isArray(rect) && rect.length === 4) { + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; + this.ctx.rect(rect[0], rect[1], width, height); + this.clip(); + this.endPath(); + } + + this.transform.apply(this, transform); + this.transform.apply(this, matrix); + } + + endAnnotation() { + this.restore(); + } + + paintImageMaskXObject(img) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const width = img.width, + height = img.height; + const glyph = this.processingType3; + + if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) { + if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) { + glyph.compiled = compileType3Glyph({ + data: img.data, + width, + height + }); + } else { + glyph.compiled = null; + } + } + + if (glyph?.compiled) { + glyph.compiled(ctx); + return; + } + + const mask = this._createMaskCanvas(img); + + const maskCanvas = mask.canvas; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); + ctx.restore(); + } + + paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + ctx.save(); + const currentTransform = ctx.mozCurrentTransform; + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + + const mask = this._createMaskCanvas(imgData); + + ctx.setTransform(1, 0, 0, 1, 0, 0); + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); + + const [x, y] = _util.Util.applyTransform([0, 0], trans); + + ctx.drawImage(mask.canvas, x, y); + } + + ctx.restore(); + } + + paintImageMaskXObjectGroup(images) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + + for (let i = 0, ii = images.length; i < ii; i++) { + const image = images[i]; + const width = image.width, + height = image.height; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; + maskCtx.save(); + putBinaryImageMask(maskCtx, image); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, false) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + ctx.save(); + ctx.transform.apply(ctx, image.transform); + ctx.scale(1, -1); + ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + } + + paintImageXObject(objId) { + if (!this.contentVisible) { + return; + } + + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + const width = imgData.width; + const height = imgData.height; + const map = []; + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } + + this.paintInlineImageXObjectGroup(imgData, map); + } + + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + ctx.scale(1 / width, -1 / height); + let imgToPaint; + + if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + imgToPaint = tmpCanvas.canvas; + } + + const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse); + + ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + + if (this.imageLayer) { + const position = this.getCanvasPosition(0, -height); + this.imageLayer.appendImage({ + imgData, + left: position[0], + top: position[1], + width: width / ctx.mozCurrentTransformInverse[0], + height: height / ctx.mozCurrentTransformInverse[3] + }); + } + + this.restore(); + } + + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + + for (let i = 0, ii = map.length; i < ii; i++) { + const entry = map[i]; + ctx.save(); + ctx.transform.apply(ctx, entry.transform); + ctx.scale(1, -1); + ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + + if (this.imageLayer) { + const position = this.getCanvasPosition(entry.x, entry.y); + this.imageLayer.appendImage({ + imgData, + left: position[0], + top: position[1], + width: w, + height: h + }); + } + + ctx.restore(); + } + } + + paintSolidColorImageMask() { + if (!this.contentVisible) { + return; + } + + this.ctx.fillRect(0, 0, 1, 1); + } + + markPoint(tag) {} + + markPointProps(tag, properties) {} + + beginMarkedContent(tag) { + this.markedContentStack.push({ + visible: true + }); + } + + beginMarkedContentProps(tag, properties) { + if (tag === "OC") { + this.markedContentStack.push({ + visible: this.optionalContentConfig.isVisible(properties) + }); + } else { + this.markedContentStack.push({ + visible: true + }); + } + + this.contentVisible = this.isContentVisible(); + } + + endMarkedContent() { + this.markedContentStack.pop(); + this.contentVisible = this.isContentVisible(); + } + + beginCompat() {} + + endCompat() {} + + consumePath() { + const ctx = this.ctx; + + if (this.pendingClip) { + if (this.pendingClip === EO_CLIP) { + ctx.clip("evenodd"); + } else { + ctx.clip(); + } + + this.pendingClip = null; + } + + ctx.beginPath(); + } + + getSinglePixelWidth() { + if (this._cachedGetSinglePixelWidth === null) { + const m = this.ctx.mozCurrentTransform; + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const sqNorm1 = m[0] ** 2 + m[2] ** 2; + const sqNorm2 = m[1] ** 2 + m[3] ** 2; + const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet; + + if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) { + this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight); + } else if (absDet > Number.EPSILON) { + this._cachedGetSinglePixelWidth = pixelHeight; + } else { + this._cachedGetSinglePixelWidth = 1; + } + } + + return this._cachedGetSinglePixelWidth; + } + + getCanvasPosition(x, y) { + const transform = this.ctx.mozCurrentTransform; + return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; + } + + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + + return true; + } + + } + + for (const op in _util.OPS) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } + + return CanvasGraphics; +}(); + +exports.CanvasGraphics = CanvasGraphics; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getShadingPattern = getShadingPattern; +exports.TilingPattern = void 0; + +var _util = __w_pdfjs_require__(2); + +function applyBoundingBox(ctx, bbox) { + if (!bbox || typeof Path2D === "undefined") { + return; + } + + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const region = new Path2D(); + region.rect(bbox[0], bbox[1], width, height); + ctx.clip(region); +} + +class BaseShadingPattern { + constructor() { + if (this.constructor === BaseShadingPattern) { + (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); + } + } + + getPattern() { + (0, _util.unreachable)("Abstract method `getPattern` called."); + } + +} + +class RadialAxialShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._type = IR[1]; + this._bbox = IR[2]; + this._colorStops = IR[3]; + this._p0 = IR[4]; + this._p1 = IR[5]; + this._r0 = IR[6]; + this._r1 = IR[7]; + this._matrix = IR[8]; + this._patternCache = null; + } + + _createGradient(ctx) { + let grad; + + if (this._type === "axial") { + grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); + } else if (this._type === "radial") { + grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); + } + + for (const colorStop of this._colorStops) { + grad.addColorStop(colorStop[0], colorStop[1]); + } + + return grad; + } + + getPattern(ctx, owner, inverse, shadingFill = false) { + let pattern; + + if (this._patternCache) { + pattern = this._patternCache; + } else { + if (!shadingFill) { + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", owner.ctx.canvas.width, owner.ctx.canvas.height, true); + const tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.beginPath(); + tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.setTransform.apply(tmpCtx, owner.baseTransform); + + if (this._matrix) { + tmpCtx.transform.apply(tmpCtx, this._matrix); + } + + applyBoundingBox(tmpCtx, this._bbox); + tmpCtx.fillStyle = this._createGradient(tmpCtx); + tmpCtx.fill(); + pattern = ctx.createPattern(tmpCanvas.canvas, "repeat"); + } else { + applyBoundingBox(ctx, this._bbox); + pattern = this._createGradient(ctx); + } + + this._patternCache = pattern; + } + + if (!shadingFill) { + const domMatrix = new DOMMatrix(inverse); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`); + } + } + + return pattern; + } + +} + +function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + const coords = context.coords, + colors = context.colors; + const bytes = data.data, + rowSize = data.width * 4; + let tmp; + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + + if (y1 >= y3) { + return; + } + + const c1r = colors[c1], + c1g = colors[c1 + 1], + c1b = colors[c1 + 2]; + const c2r = colors[c2], + c2g = colors[c2 + 1], + c2b = colors[c2 + 2]; + const c3r = colors[c3], + c3g = colors[c3 + 1], + c3b = colors[c3 + 2]; + const minY = Math.round(y1), + maxY = Math.round(y3); + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; + + for (let y = minY; y <= maxY; y++) { + if (y < y2) { + let k; + + if (y < y1) { + k = 0; + } else { + k = (y1 - y) / (y1 - y2); + } + + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + let k; + + if (y > y3) { + k = 1; + } else if (y2 === y3) { + k = 0; + } else { + k = (y2 - y) / (y2 - y3); + } + + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + + let k; + + if (y < y1) { + k = 0; + } else if (y > y3) { + k = 1; + } else { + k = (y1 - y) / (y1 - y3); + } + + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; + + for (let x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + + if (k < 0) { + k = 0; + } else if (k > 1) { + k = 1; + } + + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; + } + } +} + +function drawFigure(data, figure, context) { + const ps = figure.coords; + const cs = figure.colors; + let i, ii; + + switch (figure.type) { + case "lattice": + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; + + for (i = 0; i < rows; i++) { + let q = i * verticesPerRow; + + for (let j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); + } + } + + break; + + case "triangles": + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } + + break; + + default: + throw new Error("illegal figure"); + } +} + +class MeshShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._coords = IR[2]; + this._colors = IR[3]; + this._figures = IR[4]; + this._bounds = IR[5]; + this._matrix = IR[6]; + this._bbox = IR[7]; + this._background = IR[8]; + } + + _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(this._bounds[0]); + const offsetY = Math.floor(this._bounds[1]); + const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; + const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { + coords: this._coords, + colors: this._colors, + offsetX: -offsetX, + offsetY: -offsetY, + scaleX: 1 / scaleX, + scaleY: 1 / scaleY + }; + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); + + if (backgroundColor) { + const bytes = data.data; + + for (let i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; + } + } + + for (const figure of this._figures) { + drawFigure(data, figure, context); + } + + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; + return { + canvas, + offsetX: offsetX - BORDER_SIZE * scaleX, + offsetY: offsetY - BORDER_SIZE * scaleY, + scaleX, + scaleY + }; + } + + getPattern(ctx, owner, inverse, shadingFill = false) { + applyBoundingBox(ctx, this._bbox); + let scale; + + if (shadingFill) { + scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + + if (this._matrix) { + const matrixScale = _util.Util.singularValueDecompose2dScale(this._matrix); + + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; + } + } + + const temporaryPatternCanvas = this._createMeshCanvas(scale, shadingFill ? null : this._background, owner.cachedCanvases); + + if (!shadingFill) { + ctx.setTransform.apply(ctx, owner.baseTransform); + + if (this._matrix) { + ctx.transform.apply(ctx, this._matrix); + } + } + + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); + } + +} + +class DummyShadingPattern extends BaseShadingPattern { + getPattern() { + return "hotpink"; + } + +} + +function getShadingPattern(IR) { + switch (IR[0]) { + case "RadialAxial": + return new RadialAxialShadingPattern(IR); + + case "Mesh": + return new MeshShadingPattern(IR); + + case "Dummy": + return new DummyShadingPattern(); + } + + throw new Error(`Unknown IR type: ${IR[0]}`); +} + +const PaintType = { + COLORED: 1, + UNCOLORED: 2 +}; + +class TilingPattern { + static get MAX_PATTERN_SIZE() { + return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000); + } + + constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { + this.operatorList = IR[2]; + this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; + this.bbox = IR[4]; + this.xstep = IR[5]; + this.ystep = IR[6]; + this.paintType = IR[7]; + this.tilingType = IR[8]; + this.color = color; + this.ctx = ctx; + this.canvasGraphicsFactory = canvasGraphicsFactory; + this.baseTransform = baseTransform; + } + + createPatternCanvas(owner) { + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)("TilingType: " + tilingType); + const x0 = bbox[0], + y0 = bbox[1], + x1 = bbox[2], + y1 = bbox[3]; + + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(graphics, paintType, color); + let adjustedX0 = x0; + let adjustedY0 = y0; + let adjustedX1 = x1; + let adjustedY1 = y1; + + if (x0 < 0) { + adjustedX0 = 0; + adjustedX1 += Math.abs(x0); + } + + if (y0 < 0) { + adjustedY0 = 0; + adjustedY1 += Math.abs(y0); + } + + tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0)); + graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); + this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1); + graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice(); + graphics.executeOperatorList(operatorList); + graphics.endDrawing(); + return { + canvas: tmpCanvas.canvas, + scaleX: dimx.scale, + scaleY: dimy.scale, + offsetX: adjustedX0, + offsetY: adjustedY0 + }; + } + + getSizeAndScale(step, realOutputSize, scale) { + step = Math.abs(step); + const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); + + if (size >= maxSize) { + size = maxSize; + } else { + scale = size / step; + } + + return { + scale, + size + }; + } + + clipBbox(graphics, x0, y0, x1, y1) { + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.clip(); + graphics.endPath(); + } + + setFillAndStrokeStyleToContext(graphics, paintType, color) { + const context = graphics.ctx, + current = graphics.current; + + switch (paintType) { + case PaintType.COLORED: + const ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + current.fillColor = ctx.fillStyle; + current.strokeColor = ctx.strokeStyle; + break; + + case PaintType.UNCOLORED: + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); + + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + current.fillColor = cssColor; + current.strokeColor = cssColor; + break; + + default: + throw new _util.FormatError(`Unsupported paint type: ${paintType}`); + } + } + + getPattern(ctx, owner, inverse, shadingFill = false) { + let matrix = inverse; + + if (!shadingFill) { + matrix = _util.Util.transform(matrix, owner.baseTransform); + + if (this.matrix) { + matrix = _util.Util.transform(matrix, this.matrix); + } + } + + const temporaryPatternCanvas = this.createPatternCanvas(owner); + let domMatrix = new DOMMatrix(matrix); + domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); + const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`); + } + + return pattern; + } + +} + +exports.TilingPattern = TilingPattern; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; +GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; + +var _util = __w_pdfjs_require__(2); + +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; + +function wrapReason(reason) { + if (typeof reason !== "object" || reason === null) { + return reason; + } + + switch (reason.name) { + case "AbortException": + return new _util.AbortException(reason.message); + + case "MissingPDFException": + return new _util.MissingPDFException(reason.message); + + case "UnexpectedResponseException": + return new _util.UnexpectedResponseException(reason.message, reason.status); + + case "UnknownErrorException": + return new _util.UnknownErrorException(reason.message, reason.details); + + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); + } +} + +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.postMessageTransfers = true; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + + this._onComObjOnMessage = event => { + const data = event.data; + + if (data.targetName !== this.sourceName) { + return; + } + + if (data.stream) { + this._processStreamMessage(data); + + return; + } + + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + + delete this.callbackCapabilities[callbackId]; + + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + + return; + } + + const action = this.actionHandler[data.action]; + + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); + } + + if (data.callbackId) { + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); + }).then(function (result) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, + callbackId: data.callbackId, + reason: wrapReason(reason) + }); + }); + return; + } + + if (data.streamId) { + this._createStreamSink(data); + + return; + } + + action(data.data); + }; + + comObj.addEventListener("message", this._onComObjOnMessage); + } + + on(actionName, handler) { + const ah = this.actionHandler; + + if (ah[actionName]) { + throw new Error(`There is already an actionName called "${actionName}"`); + } + + ah[actionName] = handler; + } + + send(actionName, data, transfers) { + this._postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data + }, transfers); + } + + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = (0, _util.createPromiseCapability)(); + this.callbackCapabilities[callbackId] = capability; + + try { + this._postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); + } + + return capability.promise; + } + + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++; + const sourceName = this.sourceName; + const targetName = this.targetName; + const comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId] = { + controller, + startCall: startCapability, + pullCall: null, + cancelCall: null, + isClosed: false + }; + + this._postMessage({ + sourceName, + targetName, + action: actionName, + streamId, + data, + desiredSize: controller.desiredSize + }, transfers); + + return startCapability.promise; + }, + pull: controller => { + const pullCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) + }); + return cancelCapability.promise; + } + }, queueingStrategy); + } + + _createStreamSink(data) { + const self = this; + const action = this.actionHandler[data.action]; + const streamId = data.streamId; + const sourceName = this.sourceName; + const targetName = data.sourceName; + const comObj = this.comObj; + const streamSink = { + enqueue(chunk, size = 1, transfers) { + if (this.isCancelled) { + return; + } + + const lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = (0, _util.createPromiseCapability)(); + this.ready = this.sinkCapability.promise; + } + + self._postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); + }, + + close() { + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId + }); + delete self.streamSinks[streamId]; + }, + + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) + }); + }, + + sinkCapability: (0, _util.createPromiseCapability)(), + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: data.desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + } + + _processStreamMessage(data) { + const streamId = data.streamId; + const sourceName = this.sourceName; + const targetName = data.sourceName; + const comObj = this.comObj; + + switch (data.stream) { + case StreamKind.START_COMPLETE: + if (data.success) { + this.streamControllers[streamId].startCall.resolve(); + } else { + this.streamControllers[streamId].startCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL_COMPLETE: + if (data.success) { + this.streamControllers[streamId].pullCall.resolve(); + } else { + this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL: + if (!this.streamSinks[streamId]) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + break; + } + + if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) { + this.streamSinks[streamId].sinkCapability.resolve(); + } + + this.streamSinks[streamId].desiredSize = data.desiredSize; + const { + onPull + } = this.streamSinks[data.streamId]; + new Promise(function (resolve) { + resolve(onPull && onPull()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + break; + + case StreamKind.ENQUEUE: + (0, _util.assert)(this.streamControllers[streamId], "enqueue should have stream controller"); + + if (this.streamControllers[streamId].isClosed) { + break; + } + + this.streamControllers[streamId].controller.enqueue(data.chunk); + break; + + case StreamKind.CLOSE: + (0, _util.assert)(this.streamControllers[streamId], "close should have stream controller"); + + if (this.streamControllers[streamId].isClosed) { + break; + } + + this.streamControllers[streamId].isClosed = true; + this.streamControllers[streamId].controller.close(); + + this._deleteStreamController(streamId); + + break; + + case StreamKind.ERROR: + (0, _util.assert)(this.streamControllers[streamId], "error should have stream controller"); + this.streamControllers[streamId].controller.error(wrapReason(data.reason)); + + this._deleteStreamController(streamId); + + break; + + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + this.streamControllers[streamId].cancelCall.resolve(); + } else { + this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason)); + } + + this._deleteStreamController(streamId); + + break; + + case StreamKind.CANCEL: + if (!this.streamSinks[streamId]) { + break; + } + + const { + onCancel + } = this.streamSinks[data.streamId]; + new Promise(function (resolve) { + resolve(onCancel && onCancel(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason)); + this.streamSinks[streamId].isCancelled = true; + delete this.streamSinks[streamId]; + break; + + default: + throw new Error("Unexpected stream case"); + } + } + + async _deleteStreamController(streamId) { + await Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) { + return capability && capability.promise; + })); + delete this.streamControllers[streamId]; + } + + _postMessage(message, transfers) { + if (transfers && this.postMessageTransfers) { + this.comObj.postMessage(message, transfers); + } else { + this.comObj.postMessage(message); + } + } + + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } + +} + +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Metadata = void 0; + +var _util = __w_pdfjs_require__(2); + +class Metadata { + constructor({ + parsedData, + rawData + }) { + this._metadataMap = parsedData; + this._data = rawData; + } + + getRaw() { + return this._data; + } + + get(name) { + return this._metadataMap.get(name) ?? null; + } + + getAll() { + return (0, _util.objectFromMap)(this._metadataMap); + } + + has(name) { + return this._metadataMap.has(name); + } + +} + +exports.Metadata = Metadata; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionalContentConfig = void 0; + +var _util = __w_pdfjs_require__(2); + +class OptionalContentGroup { + constructor(name, intent) { + this.visible = true; + this.name = name; + this.intent = intent; + } + +} + +class OptionalContentConfig { + constructor(data) { + this.name = null; + this.creator = null; + this._order = null; + this._groups = new Map(); + + if (data === null) { + return; + } + + this.name = data.name; + this.creator = data.creator; + this._order = data.order; + + for (const group of data.groups) { + this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent)); + } + + if (data.baseState === "OFF") { + for (const group of this._groups) { + group.visible = false; + } + } + + for (const on of data.on) { + this._groups.get(on).visible = true; + } + + for (const off of data.off) { + this._groups.get(off).visible = false; + } + } + + _evaluateVisibilityExpression(array) { + const length = array.length; + + if (length < 2) { + return true; + } + + const operator = array[0]; + + for (let i = 1; i < length; i++) { + const element = array[i]; + let state; + + if (Array.isArray(element)) { + state = this._evaluateVisibilityExpression(element); + } else if (this._groups.has(element)) { + state = this._groups.get(element).visible; + } else { + (0, _util.warn)(`Optional content group not found: ${element}`); + return true; + } + + switch (operator) { + case "And": + if (!state) { + return false; + } + + break; + + case "Or": + if (state) { + return true; + } + + break; + + case "Not": + return !state; + + default: + return true; + } + } + + return operator === "And"; + } + + isVisible(group) { + if (group.type === "OCG") { + if (!this._groups.has(group.id)) { + (0, _util.warn)(`Optional content group not found: ${group.id}`); + return true; + } + + return this._groups.get(group.id).visible; + } else if (group.type === "OCMD") { + if (group.expression) { + return this._evaluateVisibilityExpression(group.expression); + } + + if (!group.policy || group.policy === "AnyOn") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this._groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOn") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this._groups.get(id).visible) { + return false; + } + } + + return true; + } else if (group.policy === "AnyOff") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this._groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOff") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this._groups.get(id).visible) { + return false; + } + } + + return true; + } + + (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + + (0, _util.warn)(`Unknown group type ${group.type}.`); + return true; + } + + setVisibility(id, visible = true) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return; + } + + this._groups.get(id).visible = !!visible; + } + + getOrder() { + if (!this._groups.size) { + return null; + } + + if (this._order) { + return this._order.slice(); + } + + return Array.from(this._groups.keys()); + } + + getGroups() { + return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null; + } + + getGroup(id) { + return this._groups.get(id) || null; + } + +} + +exports.OptionalContentConfig = OptionalContentConfig; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDataTransportStream = void 0; + +var _util = __w_pdfjs_require__(2); + +var _display_utils = __w_pdfjs_require__(1); + +class PDFDataTransportStream { + constructor(params, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); + this._queuedChunks = []; + this._progressiveDone = params.progressiveDone || false; + this._contentDispositionFilename = params.contentDispositionFilename || null; + const initialData = params.initialData; + + if (initialData?.length > 0) { + const buffer = new Uint8Array(initialData).buffer; + + this._queuedChunks.push(buffer); + } + + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isStreamingSupported = !params.disableStream; + this._isRangeSupported = !params.disableRange; + this._contentLength = params.length; + this._fullRequestReader = null; + this._rangeReaders = []; + + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk + }); + }); + + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total + }); + }); + + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk + }); + }); + + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); + }); + + this._pdfDataRangeTransport.transportReady(); + } + + _onReceiveData(args) { + const buffer = new Uint8Array(args.chunk).buffer; + + if (args.begin === undefined) { + if (this._fullRequestReader) { + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); + } + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== args.begin) { + return false; + } + + rangeReader._enqueue(buffer); + + return true; + }); + + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); + } + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + _onProgress(evt) { + if (evt.total === undefined) { + const firstReader = this._rangeReaders[0]; + + if (firstReader?.onProgress) { + firstReader.onProgress({ + loaded: evt.loaded + }); + } + } else { + const fullReader = this._fullRequestReader; + + if (fullReader?.onProgress) { + fullReader.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + } + } + + _onProgressiveDone() { + if (this._fullRequestReader) { + this._fullRequestReader.progressiveDone(); + } + + this._progressiveDone = true; + } + + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); + const queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFDataTransportStreamRangeReader(this, begin, end); + + this._pdfDataRangeTransport.requestDataRange(begin, end); + + this._rangeReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + + this._pdfDataRangeTransport.abort(); + } + +} + +exports.PDFDataTransportStream = PDFDataTransportStream; + +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { + this._stream = stream; + this._done = progressiveDone || false; + this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; + this._queuedChunks = queuedChunks || []; + this._loaded = 0; + + for (const chunk of this._queuedChunks) { + this._loaded += chunk.byteLength; + } + + this._requests = []; + this._headersReady = Promise.resolve(); + stream._fullRequestReader = this; + this.onProgress = null; + } + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunks.push(chunk); + } + + this._loaded += chunk.byteLength; + } + + get headersReady() { + return this._headersReady; + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._stream._isRangeSupported; + } + + get isStreamingSupported() { + return this._stream._isStreamingSupported; + } + + get contentLength() { + return this._stream._contentLength; + } + + async read() { + if (this._queuedChunks.length > 0) { + const chunk = this._queuedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + progressiveDone() { + if (this._done) { + return; + } + + this._done = true; + } + +} + +class PDFDataTransportStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._begin = begin; + this._end = end; + this._queuedChunk = null; + this._requests = []; + this._done = false; + this.onProgress = null; + } + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + const requestsCapability = this._requests.shift(); + + requestsCapability.resolve({ + value: chunk, + done: false + }); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + this._done = true; + + this._stream._removeRangeReader(this); + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._stream._removeRangeReader(this); + } + +} + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayer = void 0; + +var _display_utils = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(2); + +var _annotation_storage = __w_pdfjs_require__(9); + +var _scripting_utils = __w_pdfjs_require__(18); + +class AnnotationElementFactory { + static create(parameters) { + const subtype = parameters.data.annotationType; + + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + + case _util.AnnotationType.WIDGET: + const fieldType = parameters.data.fieldType; + + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotationElement(parameters); + + case "Btn": + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + + return new PushButtonWidgetAnnotationElement(parameters); + + case "Ch": + return new ChoiceWidgetAnnotationElement(parameters); + } + + return new WidgetAnnotationElement(parameters); + + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + + case _util.AnnotationType.FREETEXT: + return new FreeTextAnnotationElement(parameters); + + case _util.AnnotationType.LINE: + return new LineAnnotationElement(parameters); + + case _util.AnnotationType.SQUARE: + return new SquareAnnotationElement(parameters); + + case _util.AnnotationType.CIRCLE: + return new CircleAnnotationElement(parameters); + + case _util.AnnotationType.POLYLINE: + return new PolylineAnnotationElement(parameters); + + case _util.AnnotationType.CARET: + return new CaretAnnotationElement(parameters); + + case _util.AnnotationType.INK: + return new InkAnnotationElement(parameters); + + case _util.AnnotationType.POLYGON: + return new PolygonAnnotationElement(parameters); + + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + + case _util.AnnotationType.STAMP: + return new StampAnnotationElement(parameters); + + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + + default: + return new AnnotationElement(parameters); + } + } + +} + +class AnnotationElement { + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + this.page = parameters.page; + this.viewport = parameters.viewport; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderInteractiveForms = parameters.renderInteractiveForms; + this.svgFactory = parameters.svgFactory; + this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._mouseState = parameters.mouseState; + + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + + _createContainer(ignoreBorder = false) { + const data = this.data, + page = this.page, + viewport = this.viewport; + const container = document.createElement("section"); + let width = data.rect[2] - data.rect[0]; + let height = data.rect[3] - data.rect[1]; + container.setAttribute("data-annotation-id", data.id); + + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + + container.style.transform = `matrix(${viewport.transform.join(",")})`; + container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`; + + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + + if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { + width -= 2 * data.borderStyle.width; + height -= 2 * data.borderStyle.width; + } + + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `${horizontalRadius}px / ${verticalRadius}px`; + container.style.borderRadius = radius; + } + + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = "solid"; + break; + + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = "dashed"; + break; + + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)("Unimplemented border style: beveled"); + break; + + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)("Unimplemented border style: inset"); + break; + + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = "solid"; + break; + + default: + break; + } + + if (data.color) { + container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + + container.style.left = `${rect[0]}px`; + container.style.top = `${rect[1]}px`; + container.style.width = `${width}px`; + container.style.height = `${height}px`; + return container; + } + + _createQuadrilaterals(ignoreBorder = false) { + if (!this.data.quadPoints) { + return null; + } + + const quadrilaterals = []; + const savedRect = this.data.rect; + + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + } + + this.data.rect = savedRect; + return quadrilaterals; + } + + _createPopup(trigger, data) { + let container = this.container; + + if (this.quadrilaterals) { + trigger = trigger || this.quadrilaterals; + container = this.quadrilaterals[0]; + } + + if (!trigger) { + trigger = document.createElement("div"); + trigger.style.height = container.style.height; + trigger.style.width = container.style.width; + container.appendChild(trigger); + } + + const popupElement = new PopupElement({ + container, + trigger, + color: data.color, + title: data.title, + modificationDate: data.modificationDate, + contents: data.contents, + hideWrapper: true + }); + const popup = popupElement.render(); + popup.style.left = container.style.width; + container.appendChild(popup); + } + + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.className = className; + } + + return this.quadrilaterals; + } + + render() { + (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); + } + +} + +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"])); + super(parameters, { + isRenderable, + createQuadrilaterals: true + }); + } + + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + + if (data.url) { + (0, _display_utils.addLinkAttributes)(link, { + url: data.url, + target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget, + rel: linkService.externalLinkRel, + enabled: linkService.externalLinkEnabled + }); + } else if (data.action) { + this._bindNamedAction(link, data.action); + } else if (data.dest) { + this._bindLink(link, data.dest); + } else if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + this._bindJSAction(link, data); + } else { + this._bindLink(link, ""); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.appendChild(linkElement); + return quadrilateral; + }); + } + + this.container.className = "linkAnnotation"; + this.container.appendChild(link); + return this.container; + } + + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + + return false; + }; + + if (destination || destination === "") { + link.className = "internalLink"; + } + } + + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + + link.className = "internalLink"; + } + + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); + + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + + if (!jsName) { + continue; + } + + link[jsName] = () => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name + } + }); + return false; + }; + } + + link.className = "internalLink"; + } + +} + +class TextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable + }); + } + + render() { + this.container.className = "textAnnotation"; + const image = document.createElement("img"); + image.style.height = this.container.style.height; + image.style.width = this.container.style.width; + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.alt = "[{{type}} Annotation]"; + image.dataset.l10nId = "text_annotation_type"; + image.dataset.l10nArgs = JSON.stringify({ + type: this.data.name + }); + + if (!this.data.hasPopup) { + this._createPopup(image, this.data); + } + + this.container.appendChild(image); + return this.container; + } + +} + +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + + return this.container; + } + + _getKeyModifier(event) { + return navigator.platform.includes("Win") && event.ctrlKey || navigator.platform.includes("Mac") && event.metaKey; + } + + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: event.target.checked + } + }); + }); + } + } + + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + this._setEventListener(element, baseName, eventName, getter); + } + } + } + + _dispatchEventFromSandbox(actions, jsEvent) { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + }; + + const commonActions = { + display: event => { + const hidden = event.detail.display % 2 === 1; + event.target.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden, + print: event.detail.display === 0 || event.detail.display === 3 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + print: event.detail.print + }); + }, + hidden: event => { + event.target.style.visibility = event.detail.hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden: event.detail.hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + if (event.detail.readonly) { + event.target.setAttribute("readonly", ""); + } else { + event.target.removeAttribute("readonly"); + } + }, + required: event => { + if (event.detail.required) { + event.target.setAttribute("required", ""); + } else { + event.target.removeAttribute("required"); + } + }, + bgColor: event => { + setColor("bgColor", "backgroundColor", event); + }, + fillColor: event => { + setColor("fillColor", "backgroundColor", event); + }, + fgColor: event => { + setColor("fgColor", "color", event); + }, + textColor: event => { + setColor("textColor", "color", event); + }, + borderColor: event => { + setColor("borderColor", "borderColor", event); + }, + strokeColor: event => { + setColor("strokeColor", "borderColor", event); + } + }; + + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + + if (action) { + action(jsEvent); + } + } + } + +} + +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + super(parameters, { + isRenderable + }); + } + + setPropertyOnSiblings(base, key, value, keyInStorage) { + const storage = this.annotationStorage; + + for (const element of document.getElementsByName(base.name)) { + if (element !== base) { + element[key] = value; + const data = Object.create(null); + data[keyInStorage] = value; + storage.setValue(element.getAttribute("id"), data); + } + } + } + + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.className = "textWidgetAnnotation"; + let element = null; + + if (this.renderInteractiveForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue, + valueAsString: this.data.fieldValue + }); + const textContent = storedData.valueAsString || storedData.value || ""; + const elementData = { + userValue: null, + formattedValue: null, + beforeInputSelectionRange: null, + beforeInputValue: null + }; + + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = textContent; + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", textContent); + } + + elementData.userValue = textContent; + element.setAttribute("id", id); + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + }); + + let blurListener = event => { + if (elementData.formattedValue) { + event.target.value = elementData.formattedValue; + } + + event.target.scrollLeft = 0; + elementData.beforeInputSelectionRange = null; + }; + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("focus", event => { + if (elementData.userValue) { + event.target.value = elementData.userValue; + } + }); + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + elementData.userValue = event.detail.value || ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + + if (!elementData.formattedValue) { + event.target.value = elementData.userValue; + } + }, + + valueAsString(event) { + elementData.formattedValue = event.detail.valueAsString || ""; + + if (event.target !== document.activeElement) { + event.target.value = elementData.formattedValue; + } + + storage.setValue(id, { + formattedValue: elementData.formattedValue + }); + }, + + selRange(event) { + const [selStart, selEnd] = event.detail.selRange; + + if (selStart >= 0 && selEnd < event.target.value.length) { + event.target.setSelectionRange(selStart, selEnd); + } + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + elementData.beforeInputValue = event.target.value; + let commitKey = -1; + + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter") { + commitKey = 2; + } else if (event.key === "Tab") { + commitKey = 3; + } + + if (commitKey === -1) { + return; + } + + elementData.userValue = event.target.value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: event.target.value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + if (this._mouseState.isDown) { + elementData.userValue = event.target.value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: event.target.value, + willCommit: true, + commitKey: 1, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + + _blurListener(event); + }); + element.addEventListener("mousedown", event => { + elementData.beforeInputValue = event.target.value; + elementData.beforeInputSelectionRange = null; + }); + element.addEventListener("keyup", event => { + if (event.target.selectionStart === event.target.selectionEnd) { + elementData.beforeInputSelectionRange = null; + } + }); + element.addEventListener("select", event => { + elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd]; + }); + + if (this.data.actions?.Keystroke) { + element.addEventListener("input", event => { + let selStart = -1; + let selEnd = -1; + + if (elementData.beforeInputSelectionRange) { + [selStart, selEnd] = elementData.beforeInputSelectionRange; + } + + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: elementData.beforeInputValue, + change: event.data, + willCommit: false, + selStart, + selEnd + } + }); + }); + } + + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + + if (blurListener) { + element.addEventListener("blur", blurListener); + } + + element.disabled = this.data.readOnly; + element.name = this.data.fieldName; + + if (this.data.maxLen !== null) { + element.maxLength = this.data.maxLen; + } + + if (this.data.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / this.data.maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px - 1ch)`; + } + } else { + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; + } + + this._setTextStyle(element); + + this.container.appendChild(element); + return this.container; + } + + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontSize, + fontColor + } = this.data.defaultAppearanceData; + const style = element.style; + + if (fontSize) { + style.fontSize = `${fontSize}px`; + } + + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + } + +} + +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderInteractiveForms + }); + } + + render() { + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue && (data.exportValue && data.exportValue === data.fieldValue || !data.exportValue && data.fieldValue !== "Off") + }).value; + + if (typeof value === "string") { + value = value !== "Off"; + storage.setValue(id, { + value + }); + } + + this.container.className = "buttonWidgetAnnotation checkBox"; + const element = document.createElement("input"); + element.disabled = data.readOnly; + element.type = "checkbox"; + element.name = this.data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.setAttribute("id", id); + element.addEventListener("change", function (event) { + const name = event.target.name; + + for (const checkbox of document.getElementsByName(name)) { + if (checkbox !== event.target) { + checkbox.checked = false; + storage.setValue(checkbox.parentNode.getAttribute("data-annotation-id"), { + value: false + }); + } + } + + storage.setValue(id, { + value: event.target.checked + }); + }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + event.target.checked = event.detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this.container.appendChild(element); + return this.container; + } + +} + +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderInteractiveForms + }); + } + + render() { + this.container.className = "buttonWidgetAnnotation radioButton"; + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue === data.buttonValue + }).value; + + if (typeof value === "string") { + value = value !== data.buttonValue; + storage.setValue(id, { + value + }); + } + + const element = document.createElement("input"); + element.disabled = data.readOnly; + element.type = "radio"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.setAttribute("id", id); + element.addEventListener("change", function (event) { + const { + target + } = event; + + for (const radio of document.getElementsByName(target.name)) { + if (radio !== target) { + storage.setValue(radio.getAttribute("id"), { + value: false + }); + } + } + + storage.setValue(id, { + value: target.checked + }); + }); + + if (this.enableScripting && this.hasJSActions) { + const pdfButtonValue = data.buttonValue; + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + const checked = pdfButtonValue === event.detail.value; + + for (const radio of document.getElementsByName(event.target.name)) { + const radioId = radio.getAttribute("id"); + radio.checked = radioId === id && checked; + storage.setValue(radioId, { + value: radio.checked + }); + } + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this.container.appendChild(element); + return this.container; + } + +} + +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + render() { + const container = super.render(); + container.className = "buttonWidgetAnnotation pushButton"; + + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + + return container; + } + +} + +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderInteractiveForms + }); + } + + render() { + this.container.className = "choiceWidgetAnnotation"; + const storage = this.annotationStorage; + const id = this.data.id; + storage.getValue(id, { + value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined + }); + const selectElement = document.createElement("select"); + selectElement.disabled = this.data.readOnly; + selectElement.name = this.data.fieldName; + selectElement.setAttribute("id", id); + + if (!this.data.combo) { + selectElement.size = this.data.options.length; + + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + + for (const option of this.data.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + + if (this.data.fieldValue.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + } + + selectElement.appendChild(optionElement); + } + + const getValue = (event, isExport) => { + const name = isExport ? "value" : "textContent"; + const options = event.target.options; + + if (!event.target.multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + + const getItems = event => { + const options = event.target.options; + return Array.prototype.map.call(options, option => { + return { + displayValue: option.textContent, + exportValue: option.value + }; + }); + }; + + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + const options = selectElement.options; + const value = event.detail.value; + const values = new Set(Array.isArray(value) ? value : [value]); + Array.prototype.forEach.call(options, option => { + option.selected = values.has(option.value); + }); + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + multipleSelection(event) { + selectElement.multiple = true; + }, + + remove(event) { + const options = selectElement.options; + const index = event.detail.remove; + options[index].selected = false; + selectElement.remove(index); + + if (options.length > 0) { + const i = Array.prototype.findIndex.call(options, option => option.selected); + + if (i === -1) { + options[0].selected = true; + } + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + storage.setValue(id, { + value: null, + items: [] + }); + }, + + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.insertBefore(optionElement, selectElement.children[index]); + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + items(event) { + const { + items + } = event.detail; + + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + for (const item of items) { + const { + displayValue, + exportValue + } = item; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.appendChild(optionElement); + } + + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + indices(event) { + const indices = new Set(event.detail.indices); + const options = event.target.options; + Array.prototype.forEach.call(options, (option, i) => { + option.selected = indices.has(i); + }); + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + editable(event) { + event.target.disabled = !event.detail.editable; + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(event, true); + const value = getValue(event, false); + storage.setValue(id, { + value: exportValue + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + changeEx: exportValue, + willCommit: true, + commitKey: 1, + keyDown: false + } + }); + }); + + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(event) + }); + }); + } + + this.container.appendChild(selectElement); + return this.container; + } + +} + +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable + }); + } + + render() { + const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; + this.container.className = "popupAnnotation"; + + if (IGNORE_TYPES.includes(this.data.parentType)) { + return this.container; + } + + const selector = `[data-annotation-id="${this.data.parentId}"]`; + const parentElements = this.layer.querySelectorAll(selector); + + if (parentElements.length === 0) { + return this.container; + } + + const popup = new PopupElement({ + container: this.container, + trigger: Array.from(parentElements), + color: this.data.color, + title: this.data.title, + modificationDate: this.data.modificationDate, + contents: this.data.contents + }); + const page = this.page; + + const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); + + const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; + const popupTop = rect[1]; + this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`; + this.container.style.left = `${popupLeft}px`; + this.container.style.top = `${popupTop}px`; + this.container.appendChild(popup.render()); + return this.container; + } + +} + +class PopupElement { + constructor(parameters) { + this.container = parameters.container; + this.trigger = parameters.trigger; + this.color = parameters.color; + this.title = parameters.title; + this.modificationDate = parameters.modificationDate; + this.contents = parameters.contents; + this.hideWrapper = parameters.hideWrapper || false; + this.pinned = false; + } + + render() { + const BACKGROUND_ENLIGHT = 0.7; + const wrapper = document.createElement("div"); + wrapper.className = "popupWrapper"; + this.hideElement = this.hideWrapper ? wrapper : this.container; + this.hideElement.hidden = true; + const popup = document.createElement("div"); + popup.className = "popup"; + const color = this.color; + + if (color) { + const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; + const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; + const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; + popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); + } + + const title = document.createElement("h1"); + title.textContent = this.title; + popup.appendChild(title); + + const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); + + if (dateObject) { + const modificationDate = document.createElement("span"); + modificationDate.textContent = "{{date}}, {{time}}"; + modificationDate.dataset.l10nId = "annotation_date_string"; + modificationDate.dataset.l10nArgs = JSON.stringify({ + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + popup.appendChild(modificationDate); + } + + const contents = this._formatContents(this.contents); + + popup.appendChild(contents); + + if (!Array.isArray(this.trigger)) { + this.trigger = [this.trigger]; + } + + for (const element of this.trigger) { + element.addEventListener("click", this._toggle.bind(this)); + element.addEventListener("mouseover", this._show.bind(this, false)); + element.addEventListener("mouseout", this._hide.bind(this, false)); + } + + popup.addEventListener("click", this._hide.bind(this, true)); + wrapper.appendChild(popup); + return wrapper; + } + + _formatContents(contents) { + const p = document.createElement("p"); + const lines = contents.split(/(?:\r\n?|\n)/); + + for (let i = 0, ii = lines.length; i < ii; ++i) { + const line = lines[i]; + p.appendChild(document.createTextNode(line)); + + if (i < ii - 1) { + p.appendChild(document.createElement("br")); + } + } + + return p; + } + + _toggle() { + if (this.pinned) { + this._hide(true); + } else { + this._show(true); + } + } + + _show(pin = false) { + if (pin) { + this.pinned = true; + } + + if (this.hideElement.hidden) { + this.hideElement.hidden = false; + this.container.style.zIndex += 1; + } + } + + _hide(unpin = true) { + if (unpin) { + this.pinned = false; + } + + if (!this.hideElement.hidden && !this.pinned) { + this.hideElement.hidden = true; + this.container.style.zIndex -= 1; + } + } + +} + +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "freeTextAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class LineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "lineAnnotation"; + const data = this.data; + const width = data.rect[2] - data.rect[0]; + const height = data.rect[3] - data.rect[1]; + const svg = this.svgFactory.create(width, height); + const line = this.svgFactory.createElement("svg:line"); + line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); + line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); + line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); + line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); + line.setAttribute("stroke-width", data.borderStyle.width || 1); + line.setAttribute("stroke", "transparent"); + svg.appendChild(line); + this.container.append(svg); + + this._createPopup(line, data); + + return this.container; + } + +} + +class SquareAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "squareAnnotation"; + const data = this.data; + const width = data.rect[2] - data.rect[0]; + const height = data.rect[3] - data.rect[1]; + const svg = this.svgFactory.create(width, height); + const borderWidth = data.borderStyle.width; + const square = this.svgFactory.createElement("svg:rect"); + square.setAttribute("x", borderWidth / 2); + square.setAttribute("y", borderWidth / 2); + square.setAttribute("width", width - borderWidth); + square.setAttribute("height", height - borderWidth); + square.setAttribute("stroke-width", borderWidth || 1); + square.setAttribute("stroke", "transparent"); + square.setAttribute("fill", "none"); + svg.appendChild(square); + this.container.append(svg); + + this._createPopup(square, data); + + return this.container; + } + +} + +class CircleAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "circleAnnotation"; + const data = this.data; + const width = data.rect[2] - data.rect[0]; + const height = data.rect[3] - data.rect[1]; + const svg = this.svgFactory.create(width, height); + const borderWidth = data.borderStyle.width; + const circle = this.svgFactory.createElement("svg:ellipse"); + circle.setAttribute("cx", width / 2); + circle.setAttribute("cy", height / 2); + circle.setAttribute("rx", width / 2 - borderWidth / 2); + circle.setAttribute("ry", height / 2 - borderWidth / 2); + circle.setAttribute("stroke-width", borderWidth || 1); + circle.setAttribute("stroke", "transparent"); + circle.setAttribute("fill", "none"); + svg.appendChild(circle); + this.container.append(svg); + + this._createPopup(circle, data); + + return this.container; + } + +} + +class PolylineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const width = data.rect[2] - data.rect[0]; + const height = data.rect[3] - data.rect[1]; + const svg = this.svgFactory.create(width, height); + let points = []; + + for (const coordinate of data.vertices) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(x + "," + y); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "none"); + svg.appendChild(polyline); + this.container.append(svg); + + this._createPopup(polyline, data); + + return this.container; + } + +} + +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } + +} + +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "caretAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class InkAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const width = data.rect[2] - data.rect[0]; + const height = data.rect[3] - data.rect[1]; + const svg = this.svgFactory.create(width, height); + + for (const inkList of data.inkLists) { + let points = []; + + for (const coordinate of inkList) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(`${x},${y}`); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "none"); + + this._createPopup(polyline, data); + + svg.appendChild(polyline); + } + + this.container.append(svg); + return this.container; + } + +} + +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + + this.container.className = "highlightAnnotation"; + return this.container; + } + +} + +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + + this.container.className = "underlineAnnotation"; + return this.container; + } + +} + +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + + this.container.className = "squigglyAnnotation"; + return this.container; + } + +} + +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + + this.container.className = "strikeoutAnnotation"; + return this.container; + } + +} + +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "stampAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class FileAttachmentAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + id: (0, _util.stringToPDFString)(filename), + filename, + content + }); + } + + render() { + this.container.className = "fileAttachmentAnnotation"; + const trigger = document.createElement("div"); + trigger.style.height = this.container.style.height; + trigger.style.width = this.container.style.width; + trigger.addEventListener("dblclick", this._download.bind(this)); + + if (!this.data.hasPopup && (this.data.title || this.data.contents)) { + this._createPopup(trigger, this.data); + } + + this.container.appendChild(trigger); + return this.container; + } + + _download() { + this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); + } + +} + +class AnnotationLayer { + static render(parameters) { + const sortedAnnotations = [], + popupAnnotations = []; + + for (const data of parameters.annotations) { + if (!data) { + continue; + } + + if (data.annotationType === _util.AnnotationType.POPUP) { + popupAnnotations.push(data); + continue; + } + + sortedAnnotations.push(data); + } + + if (popupAnnotations.length) { + sortedAnnotations.push(...popupAnnotations); + } + + for (const data of sortedAnnotations) { + const element = AnnotationElementFactory.create({ + data, + layer: parameters.div, + page: parameters.page, + viewport: parameters.viewport, + linkService: parameters.linkService, + downloadManager: parameters.downloadManager, + imageResourcesPath: parameters.imageResourcesPath || "", + renderInteractiveForms: parameters.renderInteractiveForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: parameters.enableScripting, + hasJSActions: parameters.hasJSActions, + mouseState: parameters.mouseState || { + isDown: false + } + }); + + if (element.isRenderable) { + const rendered = element.render(); + + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + parameters.div.appendChild(renderedElement); + } + } else { + if (element instanceof PopupAnnotationElement) { + parameters.div.prepend(rendered); + } else { + parameters.div.appendChild(rendered); + } + } + } + } + } + + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + + for (const data of parameters.annotations) { + const elements = parameters.div.querySelectorAll(`[data-annotation-id="${data.id}"]`); + + if (elements) { + for (const element of elements) { + element.style.transform = transform; + } + } + } + + parameters.div.hidden = false; + } + +} + +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorConverters = void 0; + +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} + +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + + static RGB_HTML([r, g, b]) { + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + + static T_HTML() { + return "#00000000"; + } + + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + + static CMYK_HTML(components) { + return this.RGB_HTML(this.CMYK_RGB(components)); + } + + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } + +} + +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.renderTextLayer = renderTextLayer; + +var _util = __w_pdfjs_require__(2); + +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +const AllWhitespaceRegexp = /^\s+$/g; + +function getAscent(fontFamily, ctx) { + const cachedAscent = ascentCache.get(fontFamily); + + if (cachedAscent) { + return cachedAscent; + } + + ctx.save(); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + + if (ascent) { + ctx.restore(); + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ctx.strokeStyle = "red"; + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("g", 0, 0); + let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + descent = 0; + + for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { + if (pixels[i] > 0) { + descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); + pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + ascent = 0; + + for (let i = 0, ii = pixels.length; i < ii; i += 4) { + if (pixels[i] > 0) { + ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.restore(); + + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); + return DEFAULT_FONT_ASCENT; +} + +function appendText(task, geom, styles, ctx) { + const textDiv = document.createElement("span"); + const textDivProperties = { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + originalTransform: null, + paddingBottom: 0, + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + scale: 1 + }; + + task._textDivs.push(textDiv); + + const tx = _util.Util.transform(task._viewport.transform, geom.transform); + + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + + if (style.vertical) { + angle += Math.PI / 2; + } + + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(style.fontFamily, ctx); + let left, top; + + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + + textDiv.style.left = `${left}px`; + textDiv.style.top = `${top}px`; + textDiv.style.fontSize = `${fontHeight}px`; + textDiv.style.fontFamily = style.fontFamily; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = geom.fontName; + } + + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + + let shouldScaleText = false; + + if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) { + shouldScaleText = true; + } else if (geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + + if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { + shouldScaleText = true; + } + } + + if (shouldScaleText) { + if (style.vertical) { + textDivProperties.canvasWidth = geom.height * task._viewport.scale; + } else { + textDivProperties.canvasWidth = geom.width * task._viewport.scale; + } + } + + task._textDivProperties.set(textDiv, textDivProperties); + + if (task._textContentStream) { + task._layoutText(textDiv); + } + + if (task._enhanceTextSelection && textDivProperties.hasText) { + let angleCos = 1, + angleSin = 0; + + if (angle !== 0) { + angleCos = Math.cos(angle); + angleSin = Math.sin(angle); + } + + const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + const divHeight = fontHeight; + let m, b; + + if (angle !== 0) { + m = [angleCos, angleSin, -angleSin, angleCos, left, top]; + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + } else { + b = [left, top, left + divWidth, top + divHeight]; + } + + task._bounds.push({ + left: b[0], + top: b[1], + right: b[2], + bottom: b[3], + div: textDiv, + size: [divWidth, divHeight], + m + }); + } +} + +function render(task) { + if (task._canceled) { + return; + } + + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; + + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + task._renderingDone = true; + capability.resolve(); + return; + } + + if (!task._textContentStream) { + for (let i = 0; i < textDivsLength; i++) { + task._layoutText(textDivs[i]); + } + } + + task._renderingDone = true; + capability.resolve(); +} + +function findPositiveMin(ts, offset, count) { + let result = 0; + + for (let i = 0; i < count; i++) { + const t = ts[offset++]; + + if (t > 0) { + result = result ? Math.min(t, result) : t; + } + } + + return result; +} + +function expand(task) { + const bounds = task._bounds; + const viewport = task._viewport; + const expanded = expandBounds(viewport.width, viewport.height, bounds); + + for (let i = 0; i < expanded.length; i++) { + const div = bounds[i].div; + + const divProperties = task._textDivProperties.get(div); + + if (divProperties.angle === 0) { + divProperties.paddingLeft = bounds[i].left - expanded[i].left; + divProperties.paddingTop = bounds[i].top - expanded[i].top; + divProperties.paddingRight = expanded[i].right - bounds[i].right; + divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + + task._textDivProperties.set(div, divProperties); + + continue; + } + + const e = expanded[i], + b = bounds[i]; + const m = b.m, + c = m[0], + s = m[1]; + const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + const ts = new Float64Array(64); + + for (let j = 0, jj = points.length; j < jj; j++) { + const t = _util.Util.applyTransform(points[j], m); + + ts[j + 0] = c && (e.left - t[0]) / c; + ts[j + 4] = s && (e.top - t[1]) / s; + ts[j + 8] = c && (e.right - t[0]) / c; + ts[j + 12] = s && (e.bottom - t[1]) / s; + ts[j + 16] = s && (e.left - t[0]) / -s; + ts[j + 20] = c && (e.top - t[1]) / c; + ts[j + 24] = s && (e.right - t[0]) / -s; + ts[j + 28] = c && (e.bottom - t[1]) / c; + ts[j + 32] = c && (e.left - t[0]) / -c; + ts[j + 36] = s && (e.top - t[1]) / -s; + ts[j + 40] = c && (e.right - t[0]) / -c; + ts[j + 44] = s && (e.bottom - t[1]) / -s; + ts[j + 48] = s && (e.left - t[0]) / s; + ts[j + 52] = c && (e.top - t[1]) / -c; + ts[j + 56] = s && (e.right - t[0]) / s; + ts[j + 60] = c && (e.bottom - t[1]) / -c; + } + + const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; + divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; + divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; + divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + + task._textDivProperties.set(div, divProperties); + } +} + +function expandBounds(width, height, boxes) { + const bounds = boxes.map(function (box, i) { + return { + x1: box.left, + y1: box.top, + x2: box.right, + y2: box.bottom, + index: i, + x1New: undefined, + x2New: undefined + }; + }); + expandBoundsLTR(width, bounds); + const expanded = new Array(boxes.length); + + for (const b of bounds) { + const i = b.index; + expanded[i] = { + left: b.x1New, + top: 0, + right: b.x2New, + bottom: 0 + }; + } + + boxes.map(function (box, i) { + const e = expanded[i], + b = bounds[i]; + b.x1 = box.top; + b.y1 = width - e.right; + b.x2 = box.bottom; + b.y2 = width - e.left; + b.index = i; + b.x1New = undefined; + b.x2New = undefined; + }); + expandBoundsLTR(height, bounds); + + for (const b of bounds) { + const i = b.index; + expanded[i].top = b.x1New; + expanded[i].bottom = b.x2New; + } + + return expanded; +} + +function expandBoundsLTR(width, bounds) { + bounds.sort(function (a, b) { + return a.x1 - b.x1 || a.index - b.index; + }); + const fakeBoundary = { + x1: -Infinity, + y1: -Infinity, + x2: 0, + y2: Infinity, + index: -1, + x1New: 0, + x2New: 0 + }; + const horizon = [{ + start: -Infinity, + end: Infinity, + boundary: fakeBoundary + }]; + + for (const boundary of bounds) { + let i = 0; + + while (i < horizon.length && horizon[i].end <= boundary.y1) { + i++; + } + + let j = horizon.length - 1; + + while (j >= 0 && horizon[j].start >= boundary.y2) { + j--; + } + + let horizonPart, affectedBoundary; + let q, + k, + maxXNew = -Infinity; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + let xNew; + + if (affectedBoundary.x2 > boundary.x1) { + xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; + } else if (affectedBoundary.x2New === undefined) { + xNew = (affectedBoundary.x2 + boundary.x1) / 2; + } else { + xNew = affectedBoundary.x2New; + } + + if (xNew > maxXNew) { + maxXNew = xNew; + } + } + + boundary.x1New = maxXNew; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + if (affectedBoundary.x2 > boundary.x1) { + if (affectedBoundary.index > boundary.index) { + affectedBoundary.x2New = affectedBoundary.x2; + } + } else { + affectedBoundary.x2New = maxXNew; + } + } else if (affectedBoundary.x2New > maxXNew) { + affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + } + } + + const changedHorizon = []; + let lastBoundary = null; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + + if (lastBoundary === useBoundary) { + changedHorizon[changedHorizon.length - 1].end = horizonPart.end; + } else { + changedHorizon.push({ + start: horizonPart.start, + end: horizonPart.end, + boundary: useBoundary + }); + lastBoundary = useBoundary; + } + } + + if (horizon[i].start < boundary.y1) { + changedHorizon[0].start = boundary.y1; + changedHorizon.unshift({ + start: horizon[i].start, + end: boundary.y1, + boundary: horizon[i].boundary + }); + } + + if (boundary.y2 < horizon[j].end) { + changedHorizon[changedHorizon.length - 1].end = boundary.y2; + changedHorizon.push({ + start: boundary.y2, + end: horizon[j].end, + boundary: horizon[j].boundary + }); + } + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New !== undefined) { + continue; + } + + let used = false; + + for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = 0; !used && k < changedHorizon.length; k++) { + used = changedHorizon[k].boundary === affectedBoundary; + } + + if (!used) { + affectedBoundary.x2New = maxXNew; + } + } + + Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); + } + + for (const horizonPart of horizon) { + const affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + } + } +} + +class TextLayerRenderTask { + constructor({ + textContent, + textContentStream, + container, + viewport, + textDivs, + textContentItemsStr, + enhanceTextSelection + }) { + this._textContent = textContent; + this._textContentStream = textContentStream; + this._container = container; + this._document = container.ownerDocument; + this._viewport = viewport; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._enhanceTextSelection = !!enhanceTextSelection; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._layoutTextLastFontSize = null; + this._layoutTextLastFontFamily = null; + this._layoutTextCtx = null; + this._textDivProperties = new WeakMap(); + this._renderingDone = false; + this._canceled = false; + this._capability = (0, _util.createPromiseCapability)(); + this._renderTimer = null; + this._bounds = []; + + this._capability.promise.finally(() => { + if (this._layoutTextCtx) { + this._layoutTextCtx.canvas.width = 0; + this._layoutTextCtx.canvas.height = 0; + this._layoutTextCtx = null; + } + }).catch(() => {}); + } + + get promise() { + return this._capability.promise; + } + + cancel() { + this._canceled = true; + + if (this._reader) { + this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")); + + this._reader = null; + } + + if (this._renderTimer !== null) { + clearTimeout(this._renderTimer); + this._renderTimer = null; + } + + this._capability.reject(new Error("TextLayer task cancelled.")); + } + + _processItems(items, styleCache) { + for (let i = 0, len = items.length; i < len; i++) { + if (items[i].str === undefined) { + if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + + this._container.classList.add("markedContent"); + + if (items[i].id !== null) { + this._container.setAttribute("id", `${items[i].id}`); + } + + parent.appendChild(this._container); + } else if (items[i].type === "endMarkedContent") { + this._container = this._container.parentNode; + } + + continue; + } + + this._textContentItemsStr.push(items[i].str); + + appendText(this, items[i], styleCache, this._layoutTextCtx); + } + } + + _layoutText(textDiv) { + const textDivProperties = this._textDivProperties.get(textDiv); + + let transform = ""; + + if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) { + const { + fontSize, + fontFamily + } = textDiv.style; + + if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { + this._layoutTextCtx.font = `${fontSize} ${fontFamily}`; + this._layoutTextLastFontSize = fontSize; + this._layoutTextLastFontFamily = fontFamily; + } + + const { + width + } = this._layoutTextCtx.measureText(textDiv.textContent); + + if (width > 0) { + textDivProperties.scale = textDivProperties.canvasWidth / width; + transform = `scaleX(${textDivProperties.scale})`; + } + } + + if (textDivProperties.angle !== 0) { + transform = `rotate(${textDivProperties.angle}deg) ${transform}`; + } + + if (transform.length > 0) { + if (this._enhanceTextSelection) { + textDivProperties.originalTransform = transform; + } + + textDiv.style.transform = transform; + } + + if (textDivProperties.hasText) { + this._container.appendChild(textDiv); + } + + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + + this._container.appendChild(br); + } + } + + _render(timeout = 0) { + const capability = (0, _util.createPromiseCapability)(); + let styleCache = Object.create(null); + + const canvas = this._document.createElement("canvas"); + + canvas.height = canvas.width = DEFAULT_FONT_SIZE; + canvas.mozOpaque = true; + this._layoutTextCtx = canvas.getContext("2d", { + alpha: false + }); + + if (this._textContent) { + const textItems = this._textContent.items; + const textStyles = this._textContent.styles; + + this._processItems(textItems, textStyles); + + capability.resolve(); + } else if (this._textContentStream) { + const pump = () => { + this._reader.read().then(({ + value, + done + }) => { + if (done) { + capability.resolve(); + return; + } + + Object.assign(styleCache, value.styles); + + this._processItems(value.items, styleCache); + + pump(); + }, capability.reject); + }; + + this._reader = this._textContentStream.getReader(); + pump(); + } else { + throw new Error('Neither "textContent" nor "textContentStream"' + " parameters specified."); + } + + capability.promise.then(() => { + styleCache = null; + + if (!timeout) { + render(this); + } else { + this._renderTimer = setTimeout(() => { + render(this); + this._renderTimer = null; + }, timeout); + } + }, this._capability.reject); + } + + expandTextDivs(expandDivs = false) { + if (!this._enhanceTextSelection || !this._renderingDone) { + return; + } + + if (this._bounds !== null) { + expand(this); + this._bounds = null; + } + + const transformBuf = [], + paddingBuf = []; + + for (let i = 0, ii = this._textDivs.length; i < ii; i++) { + const div = this._textDivs[i]; + + const divProps = this._textDivProperties.get(div); + + if (!divProps.hasText) { + continue; + } + + if (expandDivs) { + transformBuf.length = 0; + paddingBuf.length = 0; + + if (divProps.originalTransform) { + transformBuf.push(divProps.originalTransform); + } + + if (divProps.paddingTop > 0) { + paddingBuf.push(`${divProps.paddingTop}px`); + transformBuf.push(`translateY(${-divProps.paddingTop}px)`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingRight > 0) { + paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingBottom > 0) { + paddingBuf.push(`${divProps.paddingBottom}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingLeft > 0) { + paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`); + transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`); + } else { + paddingBuf.push(0); + } + + div.style.padding = paddingBuf.join(" "); + + if (transformBuf.length) { + div.style.transform = transformBuf.join(" "); + } + } else { + div.style.padding = null; + div.style.transform = divProps.originalTransform; + } + } + } + +} + +function renderTextLayer(renderParameters) { + const task = new TextLayerRenderTask({ + textContent: renderParameters.textContent, + textContentStream: renderParameters.textContentStream, + container: renderParameters.container, + viewport: renderParameters.viewport, + textDivs: renderParameters.textDivs, + textContentItemsStr: renderParameters.textContentItemsStr, + enhanceTextSelection: renderParameters.enhanceTextSelection + }); + + task._render(renderParameters.timeout); + + return task; +} + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SVGGraphics = void 0; + +var _util = __w_pdfjs_require__(2); + +var _display_utils = __w_pdfjs_require__(1); + +var _is_node = __w_pdfjs_require__(4); + +let SVGGraphics = class { + constructor() { + (0, _util.unreachable)("Not implemented: SVGGraphics"); + } + +}; +exports.SVGGraphics = SVGGraphics; +{ + const SVG_DEFAULTS = { + fontStyle: "normal", + fontWeight: "normal", + fillColor: "#000000" + }; + const XML_NS = "http://www.w3.org/XML/1998/namespace"; + const XLINK_NS = "http://www.w3.org/1999/xlink"; + const LINE_CAP_STYLES = ["butt", "round", "square"]; + const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; + + const convertImgDataToPng = function () { + const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + const CHUNK_WRAPPER_SIZE = 12; + const crcTable = new Int32Array(256); + + for (let i = 0; i < 256; i++) { + let c = i; + + for (let h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedb88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } + } + + crcTable[i] = c; + } + + function crc32(data, start, end) { + let crc = -1; + + for (let i = start; i < end; i++) { + const a = (crc ^ data[i]) & 0xff; + const b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + + return crc ^ -1; + } + + function writePngChunk(type, body, data, offset) { + let p = offset; + const len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + const crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + + function adler32(data, start, end) { + let a = 1; + let b = 0; + + for (let i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + + return b << 16 | a; + } + + function deflateSync(literals) { + if (!_is_node.isNodeJS) { + return deflateSyncUncompressed(literals); + } + + try { + let input; + + if (parseInt(process.versions.node) >= 8) { + input = literals; + } else { + input = Buffer.from(literals); + } + + const output = require("zlib").deflateSync(input, { + level: 9 + }); + + return output instanceof Uint8Array ? output : new Uint8Array(output); + } catch (e) { + (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); + } + + return deflateSyncUncompressed(literals); + } + + function deflateSyncUncompressed(literals) { + let len = literals.length; + const maxBlockLength = 0xffff; + const deflateBlocks = Math.ceil(len / maxBlockLength); + const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + let pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + let pos = 0; + + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + const adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + return idat; + } + + function encode(imgData, kind, forceDataSchema, isMask) { + const width = imgData.width; + const height = imgData.height; + let bitDepth, colorType, lineSize; + const bytes = imgData.data; + + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + + default: + throw new Error("invalid format"); + } + + const literals = new Uint8Array((1 + lineSize) * height); + let offsetLiterals = 0, + offsetBytes = 0; + + for (let y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + + if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { + offsetLiterals = 0; + + for (let y = 0; y < height; y++) { + offsetLiterals++; + + for (let i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xff; + } + } + } + + const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + const idat = deflateSync(literals); + const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + const data = new Uint8Array(pngLength); + let offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk("IHDR", ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk("IDATA", idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk("IEND", new Uint8Array(0), data, offset); + return (0, _util.createObjectURL)(data, "image/png", forceDataSchema); + } + + return function convertImgDataToPng(imgData, forceDataSchema, isMask) { + const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema, isMask); + }; + }(); + + class SVGExtraState { + constructor() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textMatrixScale = 1; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = "#000000"; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ""; + this.lineCap = ""; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ""; + } + + clone() { + return Object.create(this); + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + } + + function opListToTree(opList) { + let opTree = []; + const tmp = []; + + for (const opListElement of opList) { + if (opListElement.fn === "save") { + opTree.push({ + fnId: 92, + fn: "group", + items: [] + }); + tmp.push(opTree); + opTree = opTree[opTree.length - 1].items; + continue; + } + + if (opListElement.fn === "restore") { + opTree = tmp.pop(); + } else { + opTree.push(opListElement); + } + } + + return opTree; + } + + function pf(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + + const s = value.toFixed(10); + let i = s.length - 1; + + if (s[i] !== "0") { + return s; + } + + do { + i--; + } while (s[i] === "0"); + + return s.substring(0, s[i] === "." ? i : i + 1); + } + + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ""; + } + + return `scale(${pf(m[0])} ${pf(m[3])})`; + } + + if (m[0] === m[3] && m[1] === -m[2]) { + const a = Math.acos(m[0]) * 180 / Math.PI; + return `rotate(${pf(a)})`; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return `translate(${pf(m[4])} ${pf(m[5])})`; + } + } + + return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; + } + + let clipCount = 0; + let maskCount = 0; + let shadingCount = 0; + exports.SVGGraphics = SVGGraphics = class { + constructor(commonObjs, objs, forceDataSchema = false) { + this.svgFactory = new _display_utils.DOMSVGFactory(); + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingClip = null; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + this._operatorIdMapping = []; + + for (const op in _util.OPS) { + this._operatorIdMapping[_util.OPS[op]] = op; + } + } + + save() { + this.transformStack.push(this.transformMatrix); + const old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + } + + restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + } + + group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + } + + loadDependencies(operatorList) { + const fnArray = operatorList.fnArray; + const argsArray = operatorList.argsArray; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + if (fnArray[i] !== _util.OPS.dependency) { + continue; + } + + for (const obj of argsArray[i]) { + const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; + const promise = new Promise(resolve => { + objsPool.get(obj, resolve); + }); + this.current.dependencies.push(promise); + } + } + + return Promise.all(this.current.dependencies); + } + + transform(a, b, c, d, e, f) { + const transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + } + + getSVG(operatorList, viewport) { + this.viewport = viewport; + + const svgElement = this._initialize(viewport); + + return this.loadDependencies(operatorList).then(() => { + this.transformMatrix = _util.IDENTITY_MATRIX; + this.executeOpTree(this.convertOpList(operatorList)); + return svgElement; + }); + } + + convertOpList(operatorList) { + const operatorIdMapping = this._operatorIdMapping; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + const opList = []; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + const fnId = fnArray[i]; + opList.push({ + fnId, + fn: operatorIdMapping[fnId], + args: argsArray[i] + }); + } + + return opListToTree(opList); + } + + executeOpTree(opTree) { + for (const opTreeElement of opTree) { + const fn = opTreeElement.fn; + const fnId = opTreeElement.fnId; + const args = opTreeElement.args; + + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + + case _util.OPS.dependency: + break; + + case _util.OPS.setLeading: + this.setLeading(args); + break; + + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + + case _util.OPS.setFont: + this.setFont(args); + break; + + case _util.OPS.showText: + this.showText(args[0]); + break; + + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + + case _util.OPS.endText: + this.endText(); + break; + + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.setTextRise: + this.setTextRise(args[0]); + break; + + case _util.OPS.setTextRenderingMode: + this.setTextRenderingMode(args[0]); + break; + + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeColorN: + this.setStrokeColorN(args); + break; + + case _util.OPS.setFillColorN: + this.setFillColorN(args); + break; + + case _util.OPS.shadingFill: + this.shadingFill(args[0]); + break; + + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + + case _util.OPS.setRenderingIntent: + this.setRenderingIntent(args[0]); + break; + + case _util.OPS.setFlatness: + this.setFlatness(args[0]); + break; + + case _util.OPS.setGState: + this.setGState(args[0]); + break; + + case _util.OPS.fill: + this.fill(); + break; + + case _util.OPS.eoFill: + this.eoFill(); + break; + + case _util.OPS.stroke: + this.stroke(); + break; + + case _util.OPS.fillStroke: + this.fillStroke(); + break; + + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + + case _util.OPS.clip: + this.clip("nonzero"); + break; + + case _util.OPS.eoClip: + this.clip("evenodd"); + break; + + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + + case _util.OPS.closePath: + this.closePath(); + break; + + case _util.OPS.closeStroke: + this.closeStroke(); + break; + + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + + case _util.OPS.closeEOFillStroke: + this.closeEOFillStroke(); + break; + + case _util.OPS.nextLine: + this.nextLine(); + break; + + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + + case _util.OPS.endPath: + this.endPath(); + break; + + case 92: + this.group(opTreeElement.items); + break; + + default: + (0, _util.warn)(`Unimplemented operator ${fn}`); + break; + } + } + } + + setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + } + + setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + setTextMatrix(a, b, c, d, e, f) { + const current = this.current; + current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; + current.textMatrixScale = Math.hypot(a, b); + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtElement.appendChild(current.tspan); + } + + beginText() { + const current = this.current; + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.textMatrix = _util.IDENTITY_MATRIX; + current.lineMatrix = _util.IDENTITY_MATRIX; + current.textMatrixScale = 1; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtgrp = this.svgFactory.createElement("svg:g"); + current.xcoords = []; + current.ycoords = []; + } + + moveText(x, y) { + const current = this.current; + current.x = current.lineX += x; + current.y = current.lineY += y; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + + if (fontSize === 0) { + return; + } + + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + let x = 0; + + for (const glyph of glyphs) { + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if ((0, _util.isNum)(glyph)) { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + let vx; + const vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (glyph.isInFont || font.missingFile) { + current.xcoords.push(current.x + scaledX); + + if (vertical) { + current.ycoords.push(-current.y + scaledY); + } + + current.tspan.textContent += character; + } else {} + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + } + + current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); + + if (vertical) { + current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); + } else { + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, "font-style", current.fontStyle); + } + + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); + } + + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, "fill", current.fillColor); + } + + if (current.fillAlpha < 1) { + current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); + } + } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { + current.tspan.setAttributeNS(null, "fill", "transparent"); + } else { + current.tspan.setAttributeNS(null, "fill", "none"); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + const lineWidthScale = 1 / (current.textMatrixScale || 1); + + this._setStrokeAttributes(current.tspan, lineWidthScale); + } + + let textMatrix = current.textMatrix; + + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + + current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); + current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); + current.txtElement.appendChild(current.tspan); + current.txtgrp.appendChild(current.txtElement); + + this._ensureTransformGroup().appendChild(current.txtElement); + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + addFontStyle(fontObj) { + if (!fontObj.data) { + throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); + } + + if (!this.cssStyle) { + this.cssStyle = this.svgFactory.createElement("svg:style"); + this.cssStyle.setAttributeNS(null, "type", "text/css"); + this.defs.appendChild(this.cssStyle); + } + + const url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; + } + + setFont(details) { + const current = this.current; + const fontObj = this.commonObjs.get(details[0]); + let size = details[1]; + current.font = fontObj; + + if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.xcoords = []; + current.ycoords = []; + } + + endText() { + const current = this.current; + + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { + current.element = current.txtElement; + this.clip("nonzero"); + this.endPath(); + } + } + + setLineWidth(width) { + if (width > 0) { + this.current.lineWidth = width; + } + } + + setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.current.miterLimit = limit; + } + + setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + } + + setStrokeRGBColor(r, g, b) { + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); + } + + setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + } + + setFillRGBColor(r, g, b) { + this.current.fillColor = _util.Util.makeHexColor(r, g, b); + this.current.tspan = this.svgFactory.createElement("svg:tspan"); + this.current.xcoords = []; + this.current.ycoords = []; + } + + setStrokeColorN(args) { + this.current.strokeColor = this._makeColorN_Pattern(args); + } + + setFillColorN(args) { + this.current.fillColor = this._makeColorN_Pattern(args); + } + + shadingFill(args) { + const width = this.viewport.width; + const height = this.viewport.height; + + const inv = _util.Util.inverseTransform(this.transformMatrix); + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", x0); + rect.setAttributeNS(null, "y", y0); + rect.setAttributeNS(null, "width", x1 - x0); + rect.setAttributeNS(null, "height", y1 - y0); + rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); + + if (this.current.fillAlpha < 1) { + rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); + } + + this._ensureTransformGroup().appendChild(rect); + } + + _makeColorN_Pattern(args) { + if (args[0] === "TilingPattern") { + return this._makeTilingPattern(args); + } + + return this._makeShadingPattern(args); + } + + _makeTilingPattern(args) { + const color = args[1]; + const operatorList = args[2]; + const matrix = args[3] || _util.IDENTITY_MATRIX; + const [x0, y0, x1, y1] = args[4]; + const xstep = args[5]; + const ystep = args[6]; + const paintType = args[7]; + const tilingId = `shading${shadingCount++}`; + + const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); + + const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); + + const txstep = xstep * xscale; + const tystep = ystep * yscale; + const tiling = this.svgFactory.createElement("svg:pattern"); + tiling.setAttributeNS(null, "id", tilingId); + tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); + tiling.setAttributeNS(null, "width", txstep); + tiling.setAttributeNS(null, "height", tystep); + tiling.setAttributeNS(null, "x", `${tx0}`); + tiling.setAttributeNS(null, "y", `${ty0}`); + const svg = this.svg; + const transformMatrix = this.transformMatrix; + const fillColor = this.current.fillColor; + const strokeColor = this.current.strokeColor; + const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); + this.svg = bbox; + this.transformMatrix = matrix; + + if (paintType === 2) { + const cssColor = _util.Util.makeHexColor(...color); + + this.current.fillColor = cssColor; + this.current.strokeColor = cssColor; + } + + this.executeOpTree(this.convertOpList(operatorList)); + this.svg = svg; + this.transformMatrix = transformMatrix; + this.current.fillColor = fillColor; + this.current.strokeColor = strokeColor; + tiling.appendChild(bbox.childNodes[0]); + this.defs.appendChild(tiling); + return `url(#${tilingId})`; + } + + _makeShadingPattern(args) { + switch (args[0]) { + case "RadialAxial": + const shadingId = `shading${shadingCount++}`; + const colorStops = args[3]; + let gradient; + + switch (args[1]) { + case "axial": + const point0 = args[4]; + const point1 = args[5]; + gradient = this.svgFactory.createElement("svg:linearGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "x1", point0[0]); + gradient.setAttributeNS(null, "y1", point0[1]); + gradient.setAttributeNS(null, "x2", point1[0]); + gradient.setAttributeNS(null, "y2", point1[1]); + break; + + case "radial": + const focalPoint = args[4]; + const circlePoint = args[5]; + const focalRadius = args[6]; + const circleRadius = args[7]; + gradient = this.svgFactory.createElement("svg:radialGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "cx", circlePoint[0]); + gradient.setAttributeNS(null, "cy", circlePoint[1]); + gradient.setAttributeNS(null, "r", circleRadius); + gradient.setAttributeNS(null, "fx", focalPoint[0]); + gradient.setAttributeNS(null, "fy", focalPoint[1]); + gradient.setAttributeNS(null, "fr", focalRadius); + break; + + default: + throw new Error(`Unknown RadialAxial type: ${args[1]}`); + } + + for (const colorStop of colorStops) { + const stop = this.svgFactory.createElement("svg:stop"); + stop.setAttributeNS(null, "offset", colorStop[0]); + stop.setAttributeNS(null, "stop-color", colorStop[1]); + gradient.appendChild(stop); + } + + this.defs.appendChild(gradient); + return `url(#${shadingId})`; + + case "Mesh": + (0, _util.warn)("Unimplemented pattern Mesh"); + return null; + + case "Dummy": + return "hotpink"; + + default: + throw new Error(`Unknown IR type: ${args[0]}`); + } + } + + setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + } + + constructPath(ops, args) { + const current = this.current; + let x = current.x, + y = current.y; + let d = []; + let j = 0; + + for (const op of ops) { + switch (op | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push("M", pf(x), pf(y)); + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push("L", pf(x), pf(y)); + break; + + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + + case _util.OPS.curveTo2: + d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + + case _util.OPS.closePath: + d.push("Z"); + break; + } + } + + d = d.join(" "); + + if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { + d = current.path.getAttributeNS(null, "d") + d; + } else { + current.path = this.svgFactory.createElement("svg:path"); + + this._ensureTransformGroup().appendChild(current.path); + } + + current.path.setAttributeNS(null, "d", d); + current.path.setAttributeNS(null, "fill", "none"); + current.element = current.path; + current.setCurrentPoint(x, y); + } + + endPath() { + const current = this.current; + current.path = null; + + if (!this.pendingClip) { + return; + } + + if (!current.element) { + this.pendingClip = null; + return; + } + + const clipId = `clippath${clipCount++}`; + const clipPath = this.svgFactory.createElement("svg:clipPath"); + clipPath.setAttributeNS(null, "id", clipId); + clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); + const clipElement = current.element.cloneNode(true); + + if (this.pendingClip === "evenodd") { + clipElement.setAttributeNS(null, "clip-rule", "evenodd"); + } else { + clipElement.setAttributeNS(null, "clip-rule", "nonzero"); + } + + this.pendingClip = null; + clipPath.appendChild(clipElement); + this.defs.appendChild(clipPath); + + if (current.activeClipUrl) { + current.clipGroup = null; + + for (const prev of this.extraStack) { + prev.clipGroup = null; + } + + clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); + } + + current.activeClipUrl = `url(#${clipId})`; + this.tgrp = null; + } + + clip(type) { + this.pendingClip = type; + } + + closePath() { + const current = this.current; + + if (current.path) { + const d = `${current.path.getAttributeNS(null, "d")}Z`; + current.path.setAttributeNS(null, "d", d); + } + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setTextRise(textRise) { + this.current.textRise = textRise; + } + + setTextRenderingMode(textRenderingMode) { + this.current.textRenderingMode = textRenderingMode; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value); + break; + + case "CA": + this.setStrokeAlpha(value); + break; + + case "ca": + this.setFillAlpha(value); + break; + + default: + (0, _util.warn)(`Unimplemented graphic state operator ${key}`); + break; + } + } + } + + fill() { + const current = this.current; + + if (current.element) { + current.element.setAttributeNS(null, "fill", current.fillColor); + current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); + this.endPath(); + } + } + + stroke() { + const current = this.current; + + if (current.element) { + this._setStrokeAttributes(current.element); + + current.element.setAttributeNS(null, "fill", "none"); + this.endPath(); + } + } + + _setStrokeAttributes(element, lineWidthScale = 1) { + const current = this.current; + let dashArray = current.dashArray; + + if (lineWidthScale !== 1 && dashArray.length > 0) { + dashArray = dashArray.map(function (value) { + return lineWidthScale * value; + }); + } + + element.setAttributeNS(null, "stroke", current.strokeColor); + element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); + element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); + element.setAttributeNS(null, "stroke-linecap", current.lineCap); + element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); + element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); + element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); + element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); + } + + eoFill() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fill(); + } + + fillStroke() { + this.stroke(); + this.fill(); + } + + eoFillStroke() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fillStroke(); + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.closePath(); + this.eoFillStroke(); + } + + paintSolidColorImageMask() { + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", "1px"); + rect.setAttributeNS(null, "height", "1px"); + rect.setAttributeNS(null, "fill", this.current.fillColor); + + this._ensureTransformGroup().appendChild(rect); + } + + paintImageXObject(objId) { + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); + + if (!imgData) { + (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintInlineImageXObject(imgData, mask) { + const width = imgData.width; + const height = imgData.height; + const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", "0"); + cliprect.setAttributeNS(null, "y", "0"); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + const imgEl = this.svgFactory.createElement("svg:image"); + imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); + imgEl.setAttributeNS(null, "x", "0"); + imgEl.setAttributeNS(null, "y", pf(-height)); + imgEl.setAttributeNS(null, "width", pf(width) + "px"); + imgEl.setAttributeNS(null, "height", pf(height) + "px"); + imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); + + if (mask) { + mask.appendChild(imgEl); + } else { + this._ensureTransformGroup().appendChild(imgEl); + } + } + + paintImageMaskXObject(imgData) { + const current = this.current; + const width = imgData.width; + const height = imgData.height; + const fillColor = current.fillColor; + current.maskId = `mask${maskCount++}`; + const mask = this.svgFactory.createElement("svg:mask"); + mask.setAttributeNS(null, "id", current.maskId); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", pf(width)); + rect.setAttributeNS(null, "height", pf(height)); + rect.setAttributeNS(null, "fill", fillColor); + rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); + this.defs.appendChild(mask); + + this._ensureTransformGroup().appendChild(rect); + + this.paintInlineImageXObject(imgData, mask); + } + + paintFormXObjectBegin(matrix, bbox) { + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", bbox[0]); + cliprect.setAttributeNS(null, "y", bbox[1]); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + this.endPath(); + } + } + + paintFormXObjectEnd() {} + + _initialize(viewport) { + const svg = this.svgFactory.create(viewport.width, viewport.height); + const definitions = this.svgFactory.createElement("svg:defs"); + svg.appendChild(definitions); + this.defs = definitions; + const rootGroup = this.svgFactory.createElement("svg:g"); + rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); + svg.appendChild(rootGroup); + this.svg = rootGroup; + return svg; + } + + _ensureClipGroup() { + if (!this.current.clipGroup) { + const clipGroup = this.svgFactory.createElement("svg:g"); + clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); + this.svg.appendChild(clipGroup); + this.current.clipGroup = clipGroup; + } + + return this.current.clipGroup; + } + + _ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = this.svgFactory.createElement("svg:g"); + this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); + + if (this.current.activeClipUrl) { + this._ensureClipGroup().appendChild(this.tgrp); + } else { + this.svg.appendChild(this.tgrp); + } + } + + return this.tgrp; + } + + }; +} + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; + +class XfaLayer { + static setupStorage(html, id, element, storage, intent) { + const storedData = storage.getValue(id, { + value: null + }); + + switch (element.name) { + case "textarea": + if (storedData.value !== null) { + html.textContent = storedData.value; + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + break; + + case "input": + if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { + if (storedData.value === element.attributes.xfaOn) { + html.setAttribute("checked", true); + } + + if (intent === "print") { + break; + } + + html.addEventListener("change", event => { + storage.setValue(id, { + value: event.target.getAttribute("xfaOn") + }); + }); + } else { + if (storedData.value !== null) { + html.setAttribute("value", storedData.value); + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + } + + break; + + case "select": + if (storedData.value !== null) { + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } + } + } + + html.addEventListener("input", event => { + const options = event.target.options; + const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; + storage.setValue(id, { + value + }); + }); + break; + } + } + + static setAttributes(html, element, storage, intent) { + const { + attributes + } = element; + + if (attributes.type === "radio") { + attributes.name = `${attributes.name}-${intent}`; + } + + for (const [key, value] of Object.entries(attributes)) { + if (value === null || value === undefined || key === "dataId") { + continue; + } + + if (key !== "style") { + if (key === "textContent") { + html.textContent = value; + } else if (key === "class") { + html.setAttribute(key, value.join(" ")); + } else { + html.setAttribute(key, value); + } + } else { + Object.assign(html.style, value); + } + } + + if (storage && attributes.dataId) { + this.setupStorage(html, attributes.dataId, element, storage); + } + } + + static render(parameters) { + const storage = parameters.annotationStorage; + const root = parameters.xfa; + const intent = parameters.intent || "display"; + const rootHtml = document.createElement(root.name); + + if (root.attributes) { + this.setAttributes(rootHtml, root); + } + + const stack = [[root, -1, rootHtml]]; + const rootDiv = parameters.div; + rootDiv.appendChild(rootHtml); + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + + while (stack.length > 0) { + const [parent, i, html] = stack[stack.length - 1]; + + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + + const child = parent.children[++stack[stack.length - 1][1]]; + + if (child === null) { + continue; + } + + const { + name + } = child; + + if (name === "#text") { + html.appendChild(document.createTextNode(child.value)); + continue; + } + + let childHtml; + + if (child?.attributes?.xmlns) { + childHtml = document.createElementNS(child.attributes.xmlns, name); + } else { + childHtml = document.createElement(name); + } + + html.appendChild(childHtml); + + if (child.attributes) { + this.setAttributes(childHtml, child, storage, intent); + } + + if (child.children && child.children.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + childHtml.appendChild(document.createTextNode(child.value)); + } + } + + for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { + el.setAttribute("readOnly", true); + } + } + + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + parameters.div.style.transform = transform; + parameters.div.hidden = false; + } + +} + +exports.XfaLayer = XfaLayer; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNodeStream = void 0; + +var _util = __w_pdfjs_require__(2); + +var _network_utils = __w_pdfjs_require__(23); + +; + +const fs = require("fs"); + +const http = require("http"); + +const https = require("https"); + +const url = require("url"); + +const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; + +function parseUrl(sourceUrl) { + const parsedUrl = url.parse(sourceUrl); + + if (parsedUrl.protocol === "file:" || parsedUrl.host) { + return parsedUrl; + } + + if (/^[a-z]:[/\\]/i.test(sourceUrl)) { + return url.parse(`file:///${sourceUrl}`); + } + + if (!parsedUrl.host) { + parsedUrl.protocol = "file:"; + } + + return parsedUrl; +} + +class PDFNodeStream { + constructor(source) { + this.source = source; + this.url = parseUrl(source.url); + this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; + this.isFsUrl = this.url.protocol === "file:"; + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); + this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); + return this._fullRequestReader; + } + + getRangeReader(start, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); + + this._rangeRequestReaders.push(rangeReader); + + return rangeReader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNodeStream = PDFNodeStream; + +class BaseFullReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + const source = stream.source; + this._contentLength = source.length; + this._loaded = 0; + this._filename = null; + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + this._headersCapability = (0, _util.createPromiseCapability)(); + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this._error(new _util.AbortException("streaming is disabled")); + } + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +class BaseRangeReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + this._loaded = 0; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + const source = stream.source; + this._isStreamingSupported = !source.disableStream; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +function createRequestOptions(parsedUrl, headers) { + return { + protocol: parsedUrl.protocol, + auth: parsedUrl.auth, + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.path, + method: "GET", + headers + }; +} + +class PDFNodeStreamFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._headersCapability.resolve(); + + this._setReadableStream(response); + + const getResponseHeader = name => { + return this._readableStream.headers[name.toLowerCase()]; + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + + this._headersCapability.reject(reason); + }); + + this._request.end(); + } + +} + +class PDFNodeStreamRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + this._httpHeaders = {}; + + for (const property in stream.httpHeaders) { + const value = stream.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + this._httpHeaders[property] = value; + } + + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + return; + } + + this._setReadableStream(response); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + }); + + this._request.end(); + } + +} + +class PDFNodeStreamFsFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + fs.lstat(path, (error, stat) => { + if (error) { + if (error.code === "ENOENT") { + error = new _util.MissingPDFException(`Missing PDF "${path}".`); + } + + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._contentLength = stat.size; + + this._setReadableStream(fs.createReadStream(path)); + + this._headersCapability.resolve(); + }); + } + +} + +class PDFNodeStreamFsRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + this._setReadableStream(fs.createReadStream(path, { + start, + end: end - 1 + })); + } + +} + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createResponseStatusError = createResponseStatusError; +exports.extractFilenameFromHeader = extractFilenameFromHeader; +exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; +exports.validateResponseStatus = validateResponseStatus; + +var _util = __w_pdfjs_require__(2); + +var _content_disposition = __w_pdfjs_require__(24); + +var _display_utils = __w_pdfjs_require__(1); + +function validateRangeRequestCapabilities({ + getResponseHeader, + isHttp, + rangeChunkSize, + disableRange +}) { + (0, _util.assert)(rangeChunkSize > 0, "Range chunk size must be larger than zero"); + const returnValues = { + allowRangeRequests: false, + suggestedLength: undefined + }; + const length = parseInt(getResponseHeader("Content-Length"), 10); + + if (!Number.isInteger(length)) { + return returnValues; + } + + returnValues.suggestedLength = length; + + if (length <= 2 * rangeChunkSize) { + return returnValues; + } + + if (disableRange || !isHttp) { + return returnValues; + } + + if (getResponseHeader("Accept-Ranges") !== "bytes") { + return returnValues; + } + + const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; + + if (contentEncoding !== "identity") { + return returnValues; + } + + returnValues.allowRangeRequests = true; + return returnValues; +} + +function extractFilenameFromHeader(getResponseHeader) { + const contentDisposition = getResponseHeader("Content-Disposition"); + + if (contentDisposition) { + let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); + + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch (ex) {} + } + + if ((0, _display_utils.isPdfFile)(filename)) { + return filename; + } + } + + return null; +} + +function createResponseStatusError(status, url) { + if (status === 404 || status === 0 && url.startsWith("file:")) { + return new _util.MissingPDFException('Missing PDF "' + url + '".'); + } + + return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); +} + +function validateResponseStatus(status) { + return status === 200 || status === 206; +} + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; + +var _util = __w_pdfjs_require__(2); + +function getFilenameFromContentDispositionHeader(contentDisposition) { + let needsEncodingFixup = true; + let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = unescape(filename); + filename = rfc5987decode(filename); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + tmp = rfc2231getparam(contentDisposition); + + if (tmp) { + const filename = rfc2047decode(tmp); + return fixupEncoding(filename); + } + + tmp = toParamRegExp("filename", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + function toParamRegExp(attributePattern, flags) { + return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); + } + + function textdecode(encoding, value) { + if (encoding) { + if (!/^[\x00-\xFF]+$/.test(value)) { + return value; + } + + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = (0, _util.stringToBytes)(value); + value = decoder.decode(buffer); + needsEncodingFixup = false; + } catch (e) { + if (/^utf-?8$/i.test(encoding)) { + try { + value = decodeURIComponent(escape(value)); + needsEncodingFixup = false; + } catch (err) {} + } + } + } + + return value; + } + + function fixupEncoding(value) { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textdecode("utf-8", value); + + if (needsEncodingFixup) { + value = textdecode("iso-8859-1", value); + } + } + + return value; + } + + function rfc2231getparam(contentDispositionStr) { + const matches = []; + let match; + const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); + + while ((match = iter.exec(contentDispositionStr)) !== null) { + let [, n, quot, part] = match; + n = parseInt(n, 10); + + if (n in matches) { + if (n === 0) { + break; + } + + continue; + } + + matches[n] = [quot, part]; + } + + const parts = []; + + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + + let [quot, part] = matches[n]; + part = rfc2616unquote(part); + + if (quot) { + part = unescape(part); + + if (n === 0) { + part = rfc5987decode(part); + } + } + + parts.push(part); + } + + return parts.join(""); + } + + function rfc2616unquote(value) { + if (value.startsWith('"')) { + const parts = value.slice(1).split('\\"'); + + for (let i = 0; i < parts.length; ++i) { + const quotindex = parts[i].indexOf('"'); + + if (quotindex !== -1) { + parts[i] = parts[i].slice(0, quotindex); + parts.length = i + 1; + } + + parts[i] = parts[i].replace(/\\(.)/g, "$1"); + } + + value = parts.join('"'); + } + + return value; + } + + function rfc5987decode(extvalue) { + const encodingend = extvalue.indexOf("'"); + + if (encodingend === -1) { + return extvalue; + } + + const encoding = extvalue.slice(0, encodingend); + const langvalue = extvalue.slice(encodingend + 1); + const value = langvalue.replace(/^[^']*'/, ""); + return textdecode(encoding, value); + } + + function rfc2047decode(value) { + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + + return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + + try { + text = atob(text); + } catch (e) {} + + return textdecode(charset, text); + }); + } + + return ""; +} + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNetworkStream = void 0; + +var _util = __w_pdfjs_require__(2); + +var _network_utils = __w_pdfjs_require__(23); + +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; + +function getArrayBuffer(xhr) { + const data = xhr.response; + + if (typeof data !== "string") { + return data; + } + + const array = (0, _util.stringToBytes)(data); + return array.buffer; +} + +class NetworkManager { + constructor(url, args) { + this.url = url; + args = args || {}; + this.isHttp = /^https?:/i.test(url); + this.httpHeaders = this.isHttp && args.httpHeaders || {}; + this.withCredentials = args.withCredentials || false; + + this.getXhr = args.getXhr || function NetworkManager_getXhr() { + return new XMLHttpRequest(); + }; + + this.currXhrId = 0; + this.pendingRequests = Object.create(null); + } + + requestRange(begin, end, listeners) { + const args = { + begin, + end + }; + + for (const prop in listeners) { + args[prop] = listeners[prop]; + } + + return this.request(args); + } + + requestFull(listeners) { + return this.request(listeners); + } + + request(args) { + const xhr = this.getXhr(); + const xhrId = this.currXhrId++; + const pendingRequest = this.pendingRequests[xhrId] = { + xhr + }; + xhr.open("GET", this.url); + xhr.withCredentials = this.withCredentials; + + for (const property in this.httpHeaders) { + const value = this.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + xhr.setRequestHeader(property, value); + } + + if (this.isHttp && "begin" in args && "end" in args) { + xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); + pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; + } else { + pendingRequest.expectedStatus = OK_RESPONSE; + } + + xhr.responseType = "arraybuffer"; + + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); + }; + } + + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + } + + onProgress(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + if (pendingRequest.onProgress) { + pendingRequest.onProgress(evt); + } + } + + onStateChange(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + const xhr = pendingRequest.xhr; + + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; + } + + if (xhr.readyState !== 4) { + return; + } + + if (!(xhrId in this.pendingRequests)) { + return; + } + + delete this.pendingRequests[xhrId]; + + if (xhr.status === 0 && this.isHttp) { + if (pendingRequest.onError) { + pendingRequest.onError(xhr.status); + } + + return; + } + + const xhrStatus = xhr.status || OK_RESPONSE; + const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + if (pendingRequest.onError) { + pendingRequest.onError(xhr.status); + } + + return; + } + + const chunk = getArrayBuffer(xhr); + + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + const rangeHeader = xhr.getResponseHeader("Content-Range"); + const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk + }); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk + }); + } else if (pendingRequest.onError) { + pendingRequest.onError(xhr.status); + } + } + + getRequestXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + } + + isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + } + + abortRequest(xhrId) { + const xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } + +} + +class PDFNetworkStream { + constructor(source) { + this._source = source; + this._manager = new NetworkManager(source.url, { + httpHeaders: source.httpHeaders, + withCredentials: source.withCredentials + }); + this._rangeChunkSize = source.rangeChunkSize; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + _onRangeRequestReaderClosed(reader) { + const i = this._rangeRequestReaders.indexOf(reader); + + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNetworkStream = PDFNetworkStream; + +class PDFNetworkStreamFullRequestReader { + constructor(manager, source) { + this._manager = manager; + const args = { + onHeadersReceived: this._onHeadersReceived.bind(this), + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = source.url; + this._fullRequestId = manager.requestFull(args); + this._headersReceivedCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._contentLength = source.length; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = false; + this._isRangeSupported = false; + this._cachedChunks = []; + this._requests = []; + this._done = false; + this._storedError = undefined; + this._filename = null; + this.onProgress = null; + } + + _onHeadersReceived() { + const fullRequestXhrId = this._fullRequestId; + + const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + + const getResponseHeader = name => { + return fullRequestXhr.getResponseHeader(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._manager.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + + if (allowRangeRequests) { + this._isRangeSupported = true; + } + + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (this._isRangeSupported) { + this._manager.abortRequest(fullRequestXhrId); + } + + this._headersReceivedCapability.resolve(); + } + + _onDone(args) { + if (args) { + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: args.chunk, + done: false + }); + } else { + this._cachedChunks.push(args.chunk); + } + } + + this._done = true; + + if (this._cachedChunks.length > 0) { + return; + } + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + _onError(status) { + const url = this._url; + const exception = (0, _network_utils.createResponseStatusError)(status, url); + this._storedError = exception; + + this._headersReceivedCapability.reject(exception); + + for (const requestCapability of this._requests) { + requestCapability.reject(exception); + } + + this._requests.length = 0; + this._cachedChunks.length = 0; + } + + _onProgress(data) { + if (this.onProgress) { + this.onProgress({ + loaded: data.loaded, + total: data.lengthComputable ? data.total : this._contentLength + }); + } + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + get contentLength() { + return this._contentLength; + } + + get headersReady() { + return this._headersReceivedCapability.promise; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._cachedChunks.length > 0) { + const chunk = this._cachedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + this._headersReceivedCapability.reject(reason); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); + } + + this._fullRequestReader = null; + } + +} + +class PDFNetworkStreamRangeRequestReader { + constructor(manager, begin, end) { + this._manager = manager; + const args = { + onDone: this._onDone.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._requestId = manager.requestRange(begin, end, args); + this._requests = []; + this._queuedChunk = null; + this._done = false; + this.onProgress = null; + this.onClosed = null; + } + + _close() { + if (this.onClosed) { + this.onClosed(this); + } + } + + _onDone(data) { + const chunk = data.chunk; + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunk = chunk; + } + + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._close(); + } + + _onProgress(evt) { + if (!this.isStreamingSupported && this.onProgress) { + this.onProgress({ + loaded: evt.loaded + }); + } + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._queuedChunk !== null) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + + this._close(); + } + +} + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFetchStream = void 0; + +var _util = __w_pdfjs_require__(2); + +var _network_utils = __w_pdfjs_require__(23); + +; + +function createFetchOptions(headers, withCredentials, abortController) { + return { + method: "GET", + headers, + signal: abortController?.signal, + mode: "cors", + credentials: withCredentials ? "include" : "same-origin", + redirect: "follow" + }; +} + +function createHeaders(httpHeaders) { + const headers = new Headers(); + + for (const property in httpHeaders) { + const value = httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + headers.append(property, value); + } + + return headers; +} + +class PDFFetchStream { + constructor(source) { + this.source = source; + this.isHttp = /^https?:/i.test(source.url); + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFFetchStreamReader(this); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFFetchStreamRangeReader(this, begin, end); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFFetchStream = PDFFetchStream; + +class PDFFetchStreamReader { + constructor(stream) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + this._filename = null; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._contentLength = source.length; + this._headersCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + if (typeof AbortController !== "undefined") { + this._abortController = new AbortController(); + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._headers = createHeaders(this._stream.httpHeaders); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._reader = response.body.getReader(); + + this._headersCapability.resolve(); + + const getResponseHeader = name => { + return response.headers.get(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _util.AbortException("Streaming is disabled.")); + } + }).catch(this._headersCapability.reject); + this.onProgress = null; + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._headersCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + if (this._abortController) { + this._abortController.abort(); + } + } + +} + +class PDFFetchStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._readCapability = (0, _util.createPromiseCapability)(); + this._isStreamingSupported = !source.disableStream; + + if (typeof AbortController !== "undefined") { + this._abortController = new AbortController(); + } + + this._headers = createHeaders(this._stream.httpHeaders); + + this._headers.append("Range", `bytes=${begin}-${end - 1}`); + + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._readCapability.resolve(); + + this._reader = response.body.getReader(); + }).catch(reason => { + if (reason?.name === "AbortError") { + return; + } + + throw reason; + }); + this.onProgress = null; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + if (this._abortController) { + this._abortController.abort(); + } + } + +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "addLinkAttributes", ({ + enumerable: true, + get: function () { + return _display_utils.addLinkAttributes; + } +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getPdfFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getXfaPageViewport", ({ + enumerable: true, + get: function () { + return _display_utils.getXfaPageViewport; + } +})); +Object.defineProperty(exports, "isPdfFile", ({ + enumerable: true, + get: function () { + return _display_utils.isPdfFile; + } +})); +Object.defineProperty(exports, "LinkTarget", ({ + enumerable: true, + get: function () { + return _display_utils.LinkTarget; + } +})); +Object.defineProperty(exports, "loadScript", ({ + enumerable: true, + get: function () { + return _display_utils.loadScript; + } +})); +Object.defineProperty(exports, "PDFDateString", ({ + enumerable: true, + get: function () { + return _display_utils.PDFDateString; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +Object.defineProperty(exports, "build", ({ + enumerable: true, + get: function () { + return _api.build; + } +})); +Object.defineProperty(exports, "getDocument", ({ + enumerable: true, + get: function () { + return _api.getDocument; + } +})); +Object.defineProperty(exports, "LoopbackPort", ({ + enumerable: true, + get: function () { + return _api.LoopbackPort; + } +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ + enumerable: true, + get: function () { + return _api.PDFDataRangeTransport; + } +})); +Object.defineProperty(exports, "PDFWorker", ({ + enumerable: true, + get: function () { + return _api.PDFWorker; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); +Object.defineProperty(exports, "CMapCompressionType", ({ + enumerable: true, + get: function () { + return _util.CMapCompressionType; + } +})); +Object.defineProperty(exports, "createObjectURL", ({ + enumerable: true, + get: function () { + return _util.createObjectURL; + } +})); +Object.defineProperty(exports, "createPromiseCapability", ({ + enumerable: true, + get: function () { + return _util.createPromiseCapability; + } +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ + enumerable: true, + get: function () { + return _util.createValidAbsoluteUrl; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +Object.defineProperty(exports, "MissingPDFException", ({ + enumerable: true, + get: function () { + return _util.MissingPDFException; + } +})); +Object.defineProperty(exports, "OPS", ({ + enumerable: true, + get: function () { + return _util.OPS; + } +})); +Object.defineProperty(exports, "PasswordResponses", ({ + enumerable: true, + get: function () { + return _util.PasswordResponses; + } +})); +Object.defineProperty(exports, "PermissionFlag", ({ + enumerable: true, + get: function () { + return _util.PermissionFlag; + } +})); +Object.defineProperty(exports, "removeNullCharacters", ({ + enumerable: true, + get: function () { + return _util.removeNullCharacters; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "UnexpectedResponseException", ({ + enumerable: true, + get: function () { + return _util.UnexpectedResponseException; + } +})); +Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ + enumerable: true, + get: function () { + return _util.UNSUPPORTED_FEATURES; + } +})); +Object.defineProperty(exports, "Util", ({ + enumerable: true, + get: function () { + return _util.Util; + } +})); +Object.defineProperty(exports, "VerbosityLevel", ({ + enumerable: true, + get: function () { + return _util.VerbosityLevel; + } +})); +Object.defineProperty(exports, "AnnotationLayer", ({ + enumerable: true, + get: function () { + return _annotation_layer.AnnotationLayer; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "SVGGraphics", ({ + enumerable: true, + get: function () { + return _svg.SVGGraphics; + } +})); +Object.defineProperty(exports, "XfaLayer", ({ + enumerable: true, + get: function () { + return _xfa_layer.XfaLayer; + } +})); + +var _display_utils = __w_pdfjs_require__(1); + +var _api = __w_pdfjs_require__(6); + +var _util = __w_pdfjs_require__(2); + +var _annotation_layer = __w_pdfjs_require__(17); + +var _worker_options = __w_pdfjs_require__(12); + +var _is_node = __w_pdfjs_require__(4); + +var _text_layer = __w_pdfjs_require__(19); + +var _svg = __w_pdfjs_require__(20); + +var _xfa_layer = __w_pdfjs_require__(21); + +const pdfjsVersion = '2.10.377'; +const pdfjsBuild = '156762c48'; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(22); + + (0, _api.setPDFNetworkStreamFactory)(params => { + return new PDFNodeStream(params); + }); + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(25); + + const { + PDFFetchStream + } = __w_pdfjs_require__(26); + + (0, _api.setPDFNetworkStreamFactory)(params => { + if ((0, _display_utils.isValidFetchUrl)(params.url)) { + return new PDFFetchStream(params); + } + + return new PDFNetworkStream(params); + }); + } +} +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/ant-design-vue-jeecg/public/pdfjs/build/pdf.js.map b/ant-design-vue-jeecg/public/pdfjs/build/pdf.js.map new file mode 100644 index 0000000..4a3224b --- /dev/null +++ b/ant-design-vue-jeecg/public/pdfjs/build/pdf.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"names":["DEFAULT_LINK_REL","SVG_NS","constructor","ownerDocument","globalThis","_createCanvas","canvas","asTypedArray","isValidFetchUrl","document","response","fetch","stringToBytes","request","XMLHttpRequest","data","resolve","reject","_fetchData","cMapData","fetchData","_createSVG","offsetX","offsetY","dontFlip","centerX","viewBox","centerY","rotation","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","Math","offsetCanvasY","width","height","clone","scale","convertToViewportPoint","convertToViewportRectangle","topLeft","rect","bottomRight","convertToPdfPoint","LinkTarget","NONE","SELF","BLANK","PARENT","TOP","enabled","assert","url","urlNullRemoved","removeNullCharacters","link","targetStr","ii","i","anchor","query","end","defaultFilename","isDataScheme","warn","reURI","reFilename","splitURI","suggestedFilename","decodeURIComponent","Object","time","name","Date","timeEnd","start","toString","outBuf","longest","duration","baseUrl","protocol","removeScriptElement","script","console","toDateObject","isString","pdfDateStringRegex","matches","year","parseInt","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","xfaPage","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","Number","unreachable","base","other","absoluteUrl","_isValidProtocol","enumerable","configurable","writable","BaseException","NullCharactersRegExp","str","bytes","length","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","arrayByteLength","pos","item","itemLength","value","obj","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","isEvalSupported","hexNumbers","Array","n","makeHexColor","m1","m2","applyTransform","xt","p","m","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","Util","p2","r","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","a","b","c","first","sx","sy","normalizeRect","intersect","orderedX","rect1","rect2","orderedY","result","PDFStringTranslateTable","code","match","buf","char","escape","unescape","encodeURIComponent","arr1","arr2","date","buffer","capability","isSettled","get","contentType","forceDataSchema","URL","type","digits","b1","b2","b3","d1","d2","d3","d4","isNodeJS","process","create","context","reset","canvasAndContext","destroy","isCompressed","compressionType","reason","svg","createElement","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultStandardFontDataFactory","createPDFNetworkStream","task","src","source","isArrayBuffer","range","params","rangeTransport","worker","window","isNaN","setVerbosityLevel","workerParams","port","GlobalWorkerOptions","PDFWorker","docId","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","initialData","progressiveDone","contentDispositionFilename","disableRange","disableStream","httpHeaders","withCredentials","rangeChunkSize","messageHandler","transport","Promise","pdfDataRangeTransport","apiVersion","password","disableAutoFetch","maxImageSize","disableFontFace","postMessageTransfers","docBaseUrl","ignoreErrors","fontExtraProperties","enableXfa","useSystemFonts","cMapUrl","standardFontDataUrl","PDFDocumentLoadingTask","nextDocumentId","promise","transportDestroyed","addRangeListener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","listener","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","abort","deprecated","annotationStorage","numPages","fingerprints","isPureXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","getDownloadInfo","getStats","cleanup","keepLoadedFonts","loadingParams","loadingTask","saveDocument","getFieldObjects","hasJSActions","getCalculationOrderIds","pdfBug","pageNumber","rotate","ref","userUnit","view","getViewport","getAnnotations","intent","renderingIntent","getXfa","render","renderInteractiveForms","imageLayer","canvasFactory","background","includeAnnotationStorage","optionalContentConfigPromise","intentState","clearTimeout","canvasFactoryInstance","fnArray","argsArray","lastChunk","pageIndex","complete","error","internalRenderTask","callback","objs","commonObjs","operatorList","useRequestAnimationFrame","renderTask","getOperatorList","opListTask","streamTextContent","normalizeWhitespace","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","combineTextItems","highWaterMark","size","textContent","getTextContent","readableStream","reader","pump","items","styles","getStructTree","_destroy","waitOn","force","resetStats","_tryCleanup","renderTasks","_startRenderPage","_renderPageChunk","operatorListChunk","_pumpOperatorList","args","_abortOperatorList","curIntentState","stats","postMessage","cloned","transfers","cloneValue","desc","event","addEventListener","removeEventListener","terminate","pdfWorkerPorts","isWorkerDisabled","nextFakeWorkerId","fallbackWorkerSrc","pdfjsFilePath","mainWorkerMessageHandler","fakeWorkerCapability","loader","getMainThreadWorkerMessageHandler","eval","getWorkerSrc","loadScript","wrapper","_initializeFromPort","_initialize","workerSrc","isSameOrigin","createCDNWrapper","terminateEarly","onWorkerError","sendTest","testObj","info","_setupFakeWorker","setupFakeWorkerGlobal","WorkerMessageHandler","id","workerHandler","fromPort","onUnsupportedFeature","styleElement","page","terminated","setupMessageHandler","evt","loaded","total","sink","readyReason","headersCapability","fullReader","isStreamingSupported","isRangeSupported","contentLength","rangeReader","pdfInfo","ex","msg","exception","updatePassword","exportedError","exportedData","fontRegistry","registerFont","pageProxy","MAX_IMAGE_SIZE_TO_STORE","imageData","_onUnsupportedFeature","pageInfo","filename","getDocJSActions","getPageJSActions","results","metadata","startCleanup","cleanupSuccessful","_ensureObj","resolved","has","clear","cancel","InternalRenderTask","canvasInRendering","completed","initializeGraphics","transparency","operatorListChanged","_continue","_scheduleNext","_next","version","build","addNativeFontFace","insertRule","styleSheet","bind","nativeFontFace","featureId","rule","_queueLoadingCallback","isFontLoadingAPISupported","hasFonts","isSyncFontLoadingSupported","_loadTestFont","_prepareFontLoadEvent","FontLoader","requests","nextRequestId","supported","navigator","otherRequest","setTimeout","done","getLoadTestFont","atob","offset","chunk1","s","chunk2","ctx","called","isFontReady","loadTestFontId","COMMENT_OFFSET","spliceString","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","int32","string32","btoa","names","div","span","translatedData","createNativeFontFace","css","weight","createFontFaceRule","bytesToString","getPathGenerator","cmds","jsBuf","current","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","fs","__non_webpack_require__","Canvas","getValue","setValue","modified","getAll","objectFromMap","_setModified","resetModified","serializable","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","LINEWIDTH_SCALE_FACTOR","set","ad_bc","bc_ad","old","prev","cosValue","sinValue","getCanvas","canvasEntry","addContextCurrentTransform","POINT_TO_PROCESS_LIMIT","POINT_TYPES","imgData","width1","points","lineSize","data0","elem","mask","count","j","j0","sum","steps","outlines","coords","p0","step","pp","drawOutline","k","kk","o","l","ll","setCurrentPoint","CanvasGraphics","EXECUTION_TIME","EXECUTION_STEPS","transferMaps","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","dest","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","thisChunkHeight","destPos","srcDiff","kEnd","kEndUnrolled","srcByte","hasTransferMaps","elemsInThisChunk","properties","property","sourceCtx","destCtx","alpha","alpha_","r0","g0","b0","maskData","transferMap","layerData","y","hasBackdrop","backdrop","subtype","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","maskCtx","layerCtx","composeSMaskBackdrop","genericComposeSMask","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","beginDrawing","transparentCanvas","resetCtxToDefault","viewport","executeOperatorList","executionStartIdx","argsArrayLen","chunkOperations","endTime","stepper","fnId","objsPool","depObjId","continueCallback","endDrawing","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","tmpCanvas","tmpCtx","_createMaskCanvas","fillColor","isPatternFill","maskCanvas","putBinaryImageMask","objToCanvas","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaled","inverse","states","state","key","beginSMaskGroup","activeSMask","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","copyCtxState","suspendSMaskGroup","composeSMask","deltaTransform","resumeSMaskGroup","endSMaskGroup","x","ops","xw","yh","consumePath","strokeColor","lineWidth","needRestore","paths","path","fontObj","bold","italic","typeface","browserFontSize","paintChar","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","isFontSubpixelAAEnabled","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","glyphs","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","patternTransform","resetLineWidthToOne","glyph","isNum","restoreNeeded","spacing","character","accent","vmetric","vx","vy","scaledX","scaledY","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","showType3Text","fontMatrix","isTextInvisible","spacingLength","transformed","urx","ury","getColorN_Pattern","IR","color","baseTransform","canvasGraphicsFactory","createCanvasGraphics","_getPattern","getShadingPattern","inv","bl","br","ul","ur","x0","y0","x1","y1","matrix","bbox","group","bounds","canvasBounds","scaleX","scaleY","startTransformInverse","skewX","skewY","positions","trans","images","image","objId","map","w","h","imgToPaint","putBinaryImageData","position","left","top","entry","visible","tag","getSinglePixelWidth","absDet","sqNorm1","sqNorm2","pixelHeight","getCanvasPosition","isContentVisible","region","getPattern","_createGradient","grad","colorStop","owner","applyBoundingBox","domMatrix","colors","rowSize","tmp","c1","c2","c3","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","ps","figure","cs","verticesPerRow","rows","cols","q","drawTriangle","_createMeshCanvas","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","combinedScale","paddedWidth","paddedHeight","cachedCanvases","backgroundColor","drawFigure","matrixScale","temporaryPatternCanvas","PaintType","COLORED","UNCOLORED","createPatternCanvas","xstep","ystep","paintType","tilingType","curMatrixScale","dimx","dimy","graphics","adjustedX0","adjustedY0","adjustedX1","adjustedY1","getSizeAndScale","maxSize","TilingPattern","clipBbox","bboxWidth","bboxHeight","setFillAndStrokeStyleToContext","cssColor","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","callbackId","wrapReason","action","cbSourceName","cbTargetName","comObj","sourceName","targetName","on","ah","send","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","stream","cancelCapability","_createStreamSink","self","streamSink","enqueue","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","ready","success","_processStreamMessage","_deleteStreamController","_postMessage","getRaw","_evaluateVisibilityExpression","array","operator","element","isVisible","setVisibility","getOrder","getGroups","getGroup","_onReceiveData","found","_progressiveDataLength","_onProgress","firstReader","_onProgressiveDone","_removeRangeReader","getFullReader","queuedChunks","getRangeReader","cancelAllRequests","isPdfFile","_enqueue","requestCapability","headersReady","read","requestsCapability","parameters","fieldType","isRenderable","ignoreBorder","createQuadrilaterals","_createContainer","container","horizontalRadius","verticalRadius","radius","_createQuadrilaterals","quadrilaterals","savedRect","quadPoint","_createPopup","trigger","popupElement","title","modificationDate","contents","hideWrapper","popup","_renderQuadrilaterals","quadrilateral","addLinkAttributes","target","linkService","rel","linkElement","index","_bindLink","destination","_bindNamedAction","_bindJSAction","jsName","detail","JSON","_getKeyModifier","_setEventListener","baseName","valueGetter","shift","modifier","_setEventListeners","eventName","_dispatchEventFromSandbox","setColor","ColorConverters","commonActions","display","hidden","print","focus","preventScroll","userName","readonly","required","bgColor","fgColor","textColor","borderColor","jsEvent","actions","setPropertyOnSiblings","storage","storedData","valueAsString","elementData","userValue","formattedValue","beforeInputSelectionRange","beforeInputValue","blurListener","selRange","selStart","selEnd","commitKey","willCommit","_blurListener","change","fieldWidth","combWidth","_setTextStyle","TEXT_ALIGNMENT","style","fontColor","checkbox","radio","pdfButtonValue","checked","radioId","selectElement","optionElement","option","isExport","options","getItems","displayValue","exportValue","values","multipleSelection","remove","insert","indices","editable","changeEx","keyDown","IGNORE_TYPES","selector","parentElements","popupLeft","popupTop","BACKGROUND_ENLIGHT","g","dateObject","PDFDateString","_formatContents","lines","line","_toggle","_show","pin","_hide","unpin","borderWidth","square","circle","coordinate","polyline","getFilenameFromUrl","stringToPDFString","_download","sortedAnnotations","popupAnnotations","layer","downloadManager","imageResourcesPath","svgFactory","enableScripting","mouseState","isDown","rendered","update","elements","CMYK_G","G_CMYK","G_RGB","G_HTML","G","makeColorComp","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","RGB_CMYK","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","cachedAscent","metrics","ascent","descent","ratio","pixels","textDiv","textDivProperties","angle","canvasWidth","hasText","geom","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","tx","fontHeight","fontAscent","getAscent","shouldScaleText","absScaleX","absScaleY","angleCos","angleSin","divWidth","divHeight","right","bottom","textDivs","textDivsLength","t","ts","expanded","expandBounds","divProperties","e","jj","boxScale","findPositiveMin","box","x1New","x2New","expandBoundsLTR","boxes","fakeBoundary","horizon","boundary","maxXNew","horizonPart","affectedBoundary","xNew","changedHorizon","lastBoundary","useBoundary","used","textContentItemsStr","_processItems","len","parent","appendText","_layoutText","fontFamily","_render","timeout","styleCache","textItems","textStyles","expandTextDivs","expandDivs","expand","transformBuf","paddingBuf","divProps","renderParameters","textContentStream","enhanceTextSelection","SVGGraphics","SVG_DEFAULTS","fontStyle","fontWeight","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc","body","crc32","deflateSyncUncompressed","input","Buffer","output","level","literals","maxBlockLength","deflateBlocks","idat","pi","adler","adler32","colorType","bitDepth","offsetLiterals","offsetBytes","kind","ihdr","deflateSync","pngLength","writePngChunk","createObjectURL","encode","opTree","opListElement","fn","pf","clipCount","maskCount","shadingCount","loadDependencies","transformMatrix","getSVG","svgElement","convertOpList","operatorIdMapping","opList","opListToTree","executeOpTree","opTreeElement","lineWidthScale","textMatrix","pm","addFontStyle","details","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeTilingPattern","tilingId","txstep","tystep","tiling","tx1","ty1","_makeShadingPattern","shadingId","colorStops","point0","point1","gradient","focalPoint","circlePoint","focalRadius","circleRadius","stop","op","clipId","clipPath","clipElement","_setStrokeAttributes","dashArray","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","clipGroup","_ensureTransformGroup","setupStorage","html","setAttributes","attributes","root","rootHtml","stack","rootDiv","child","childHtml","el","http","https","fileUriRegex","parsedUrl","parseUrl","_error","_setReadableStream","auth","host","method","handleResponse","getResponseHeader","isHttp","suggestedLength","extractFilenameFromHeader","createRequestOptions","stat","returnValues","allowRangeRequests","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","status","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","decoder","fatal","textdecode","iter","parts","part","quotindex","encodingend","extvalue","encoding","langvalue","text","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","requestRange","listeners","requestFull","xhrId","pendingRequest","onProgress","onStateChange","xhrStatus","ok_response_on_range_request","getArrayBuffer","rangeHeader","begin","getRequestXhr","isPendingRequest","abortRequest","_onRangeRequestReaderClosed","onHeadersReceived","onDone","onError","manager","_onHeadersReceived","fullRequestXhrId","fullRequestXhr","_onDone","_onError","createResponseStatusError","_close","signal","abortController","mode","credentials","redirect","headers","createHeaders","createFetchOptions","validateResponseStatus","pdfjsVersion","pdfjsBuild","require","setPDFNetworkStreamFactory"],"mappings":"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","file":"pdf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n isString,\n removeNullCharacters,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg);\n this.type = type;\n }\n}\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n assert(\n url && typeof url === \"string\",\n 'addLinkAttributes: A valid \"url\" parameter must provided.'\n );\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || !isString(input)) {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nexport {\n addLinkAttributes,\n DEFAULT_LINK_REL,\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n LinkTarget,\n loadScript,\n PageViewport,\n PDFDateString,\n RenderingCancelledException,\n StatTimer,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = this.constructor.name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg);\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg);\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {}\n\nclass MissingPDFException extends BaseException {}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg);\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {}\n\nconst NullCharactersRegExp = /\\x00/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(\n bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n \"Invalid argument for bytesToString\"\n );\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n // UTF16BE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n );\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n // UTF16LE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n );\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nfunction createObjectURL(data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n isBool,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isNum,\n isSameOrigin,\n isString,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n // Provides support for globalThis in legacy browsers.\n // Support: Firefox<65, Chrome<71, Safari<12.1\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n // eslint-disable-next-line no-global-assign\n globalThis = require(\"core-js/es/global-this\");\n }\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for Object.fromEntries in legacy browsers.\n // Support: Firefox<63, Chrome<73, Safari<12.1, Node.js<12.0.0\n (function checkObjectFromEntries() {\n if (Object.fromEntries) {\n return;\n }\n require(\"core-js/es/object/from-entries.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `ReadableStream`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n let isReadableStreamSupported = false;\n\n if (typeof ReadableStream !== \"undefined\") {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n }\n if (isReadableStreamSupported) {\n return;\n }\n globalThis.ReadableStream =\n require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @private\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @private\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @private\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @private\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n} from \"./node_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nconst DefaultCanvasFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultStandardFontDataFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type IPDFStreamFactory\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts =\n !(\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n isNodeJS\n ) && !params.disableFontFace;\n }\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise} A promise that is resolved when the worker ID of the\n * `MessageHandler` is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed\"));\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n return worker.messageHandler\n .sendWithPromise(\"GetDocRequest\", {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n postMessageTransfers: worker.postMessageTransfers,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n })\n .then(function (workerId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n });\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n *\n * @typedef {Object} PDFDocumentLoadingTask\n * @property {string} docId - Unique identifier for the document loading task.\n * @property {boolean} destroyed - Whether the loading task is destroyed or not.\n * @property {function} [onPassword] - Callback to request a password if a wrong\n * or no password was provided. The callback receives two parameters: a\n * function that should be called with the new password, and a reason (see\n * {@link PasswordResponses}).\n * @property {function} [onProgress] - Callback to be able to monitor the\n * loading progress of the PDF file (necessary to implement e.g. a loading\n * bar). The callback receives an {@link OnProgressParameters} argument.\n * @property {function} [onUnsupportedFeature] - Callback for when an\n * unsupported feature is used in the PDF document. The callback receives an\n * {@link UNSUPPORTED_FEATURES} argument.\n * @property {Promise} promise - Promise for document loading\n * task completion.\n * @property {function} destroy - Abort all network requests and destroy\n * the worker. Returns a promise that is resolved when destruction is\n * completed.\n */\n\n/**\n * @type {any}\n * @ignore\n */\nconst PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n let nextDocumentId = 0;\n\n /**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\n // eslint-disable-next-line no-shadow\n class PDFDocumentLoadingTask {\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = \"d\" + nextDocumentId++;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n destroy() {\n this.destroyed = true;\n\n const transportDestroyed = !this._transport\n ? Promise.resolve()\n : this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n });\n }\n }\n return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @returns {Promise} A promise this is resolved with\n * current statistics about document structures (see\n * {@link PDFDocumentStats}).\n */\n getStats() {\n return this._transport.getStats();\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing /AcroForm field data for the JS sandbox,\n * or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - Replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be either 'display' (viewable annotations) or 'print' (printable\n * annotations). If the parameter is omitted, all annotations are fetched.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display' or 'print'.\n * The default value is 'display'.\n * @property {boolean} [renderInteractiveForms] - Whether or not interactive\n * form elements are rendered in the display layer. If so, we do not render\n * them on the canvas as well. The default value is `false`.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n * @property {boolean} [includeAnnotationStorage] - Render stored interactive\n * form element data, from the {@link AnnotationStorage}-instance, onto the\n * canvas itself; useful e.g. for printing. The default value is `false`.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display' or 'print'.\n * The default value is 'display'.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = null } = {}) {\n const renderingIntent =\n intent === \"display\" || intent === \"print\" ? intent : null;\n\n if (\n !this._annotationsPromise ||\n this._annotationsIntent !== renderingIntent\n ) {\n this._annotationsPromise = this._transport.getAnnotations(\n this._pageIndex,\n renderingIntent\n );\n this._annotationsIntent = renderingIntent;\n }\n return this._annotationsPromise;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n renderInteractiveForms = false,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n includeAnnotationStorage = false,\n optionalContentConfigPromise = null,\n }) {\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const renderingIntent = intent === \"print\" ? \"print\" : \"display\";\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(renderingIntent);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(renderingIntent, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const annotationStorage = includeAnnotationStorage\n ? this._transport.annotationStorage.serializable\n : null;\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n renderInteractiveForms: renderInteractiveForms === true,\n annotationStorage,\n });\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || renderingIntent === \"print\") {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error,\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: renderingIntent !== \"print\",\n pdfBug: this._pdfBug,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({ intent = \"display\" } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const renderingIntent = `oplist-${\n intent === \"print\" ? \"print\" : \"display\"\n }`;\n let intentState = this._intentStates.get(renderingIntent);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(renderingIntent, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n });\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n normalizeWhitespace = false,\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n this._transport.pageCache[this._pageIndex] = null;\n\n const waitOn = [];\n for (const [intent, intentState] of this._intentStates) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intent.startsWith(\"oplist-\")) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this._annotationsPromise = null;\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationsPromise = null;\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, intent) {\n const intentState = this._intentStates.get(intent);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList(args) {\n assert(\n args.intent,\n 'PDFPageProxy._pumpOperatorList: Expected \"intent\" argument.'\n );\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n args\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(args.intent);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n assert(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null),\n 'PDFPageProxy._abortOperatorList: Expected \"reason\" argument.'\n );\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason?.message));\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [intent, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(intent);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n if (\n typeof value === \"function\" ||\n typeof value === \"symbol\" ||\n value instanceof URL\n ) {\n throw new Error(\n `LoopbackPort.postMessage - cannot clone: ${value?.toString()}`\n );\n }\n\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (cloned.has(value)) {\n // already cloned the object\n return cloned.get(value);\n }\n let buffer, result;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n if (transfers?.includes(buffer)) {\n result = new value.constructor(\n buffer,\n value.byteOffset,\n value.byteLength\n );\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n if (value instanceof Map) {\n result = new Map();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const [key, val] of value) {\n result.set(key, cloneValue(val));\n }\n return result;\n }\n if (value instanceof Set) {\n result = new Set();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const val of value) {\n result.add(cloneValue(val));\n }\n return result;\n }\n result = Array.isArray(value) ? [] : Object.create(null);\n cloned.set(value, result); // Adding to cache now for cyclic references.\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (const i in value) {\n let desc,\n p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n if (typeof desc.value === \"function\" && !value.hasOwnProperty?.(i)) {\n continue;\n }\n result[i] = cloneValue(desc.value);\n }\n return result;\n }\n\n const cloned = new WeakMap();\n const event = { data: cloneValue(obj) };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level; the\n * constants from {@link VerbosityLevel} should be used.\n */\n\n/** @type {any} */\nconst PDFWorker = (function PDFWorkerClosure() {\n const pdfWorkerPorts = new WeakMap();\n let isWorkerDisabled = false;\n let fallbackWorkerSrc;\n let nextFakeWorkerId = 0;\n let fakeWorkerCapability;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n isWorkerDisabled = true;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"LIB\")) {\n fallbackWorkerSrc = \"../pdf.worker.js\";\n } else {\n fallbackWorkerSrc = \"./pdf.worker.js\";\n }\n } else if (typeof document === \"object\" && \"currentScript\" in document) {\n const pdfjsFilePath = document.currentScript?.src;\n if (pdfjsFilePath) {\n fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n }\n\n function getWorkerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (typeof fallbackWorkerSrc !== \"undefined\") {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n function getMainThreadWorkerMessageHandler() {\n let mainWorkerMessageHandler;\n try {\n mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler;\n } catch (ex) {\n /* Ignore errors. */\n }\n return mainWorkerMessageHandler || null;\n }\n\n // Loads worker code into main thread.\n function setupFakeWorkerGlobal() {\n if (fakeWorkerCapability) {\n return fakeWorkerCapability.promise;\n }\n fakeWorkerCapability = createPromiseCapability();\n\n const loader = async function () {\n const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a ` + + + + + + + +
+ +
+
+
+
+ + + + +
+
+ +
+ +
+
+
+
+
+ + + +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+ +
+ +
+ + +
+
+ + + + + + + + + +
+ + +
+
+
+ +
+ +
+ + + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
+ + + +
+
+ + diff --git a/ant-design-vue-jeecg/public/pdfjs/web/viewer.js b/ant-design-vue-jeecg/public/pdfjs/web/viewer.js new file mode 100644 index 0000000..6b39883 --- /dev/null +++ b/ant-design-vue-jeecg/public/pdfjs/web/viewer.js @@ -0,0 +1,15406 @@ +/** + * @licstart The following is the entire license notice for the + * Javascript code in this page + * + * Copyright 2021 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * Javascript code in this page + */ + +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionKind = exports.AppOptions = void 0; + +var _viewer_compatibility = __webpack_require__(2); + +const OptionKind = { + VIEWER: 0x02, + API: 0x04, + WORKER: 0x08, + PREFERENCE: 0x80 +}; +exports.OptionKind = OptionKind; +const defaultOptions = { + cursorToolOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + defaultUrl: { + value: "compressed.tracemonkey-pldi-09.pdf", + kind: OptionKind.VIEWER + }, + defaultZoomValue: { + value: "", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + disableHistory: { + value: false, + kind: OptionKind.VIEWER + }, + disablePageLabels: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePermissions: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePrintAutoRotate: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enableScripting: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + externalLinkRel: { + value: "noopener noreferrer nofollow", + kind: OptionKind.VIEWER + }, + externalLinkTarget: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + historyUpdateUrl: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + ignoreDestinationZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + imageResourcesPath: { + value: "./images/", + kind: OptionKind.VIEWER + }, + maxCanvasPixels: { + value: 16777216, + compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels, + kind: OptionKind.VIEWER + }, + pdfBugEnabled: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + printResolution: { + value: 150, + kind: OptionKind.VIEWER + }, + renderer: { + value: "canvas", + kind: OptionKind.VIEWER + }, + renderInteractiveForms: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + sidebarViewOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + scrollModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + spreadModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + textLayerMode: { + value: 1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + useOnlyCssZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewerCssTheme: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cMapPacked: { + value: true, + kind: OptionKind.API + }, + cMapUrl: { + value: "../web/cmaps/", + kind: OptionKind.API + }, + disableAutoFetch: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableFontFace: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableRange: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableStream: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + docBaseUrl: { + value: "", + kind: OptionKind.API + }, + enableXfa: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + fontExtraProperties: { + value: false, + kind: OptionKind.API + }, + isEvalSupported: { + value: true, + kind: OptionKind.API + }, + maxImageSize: { + value: -1, + kind: OptionKind.API + }, + pdfBug: { + value: false, + kind: OptionKind.API + }, + standardFontDataUrl: { + value: "../web/standard_fonts/", + kind: OptionKind.API + }, + verbosity: { + value: 1, + kind: OptionKind.API + }, + workerPort: { + value: null, + kind: OptionKind.WORKER + }, + workerSrc: { + value: "../build/pdf.worker.js", + kind: OptionKind.WORKER + } +}; +{ + defaultOptions.disablePreferences = { + value: false, + kind: OptionKind.VIEWER + }; + defaultOptions.locale = { + value: typeof navigator !== "undefined" ? navigator.language : "en-US", + kind: OptionKind.VIEWER + }; + defaultOptions.sandboxBundleSrc = { + value: "../build/pdf.sandbox.js", + kind: OptionKind.VIEWER + }; + defaultOptions.renderer.kind += OptionKind.PREFERENCE; +} +const userOptions = Object.create(null); + +class AppOptions { + constructor() { + throw new Error("Cannot initialize AppOptions."); + } + + static get(name) { + const userOption = userOptions[name]; + + if (userOption !== undefined) { + return userOption; + } + + const defaultOption = defaultOptions[name]; + + if (defaultOption !== undefined) { + return defaultOption.compatibility ?? defaultOption.value; + } + + return undefined; + } + + static getAll(kind = null) { + const options = Object.create(null); + + for (const name in defaultOptions) { + const defaultOption = defaultOptions[name]; + + if (kind) { + if ((kind & defaultOption.kind) === 0) { + continue; + } + + if (kind === OptionKind.PREFERENCE) { + const value = defaultOption.value, + valueType = typeof value; + + if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { + options[name] = value; + continue; + } + + throw new Error(`Invalid type for preference: ${name}`); + } + } + + const userOption = userOptions[name]; + options[name] = userOption !== undefined ? userOption : defaultOption.compatibility ?? defaultOption.value; + } + + return options; + } + + static set(name, value) { + userOptions[name] = value; + } + + static setAll(options) { + for (const name in options) { + userOptions[name] = options[name]; + } + } + + static remove(name) { + delete userOptions[name]; + } + +} + +exports.AppOptions = AppOptions; + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.viewerCompatibilityParams = void 0; +const compatibilityParams = Object.create(null); +{ + const userAgent = typeof navigator !== "undefined" && navigator.userAgent || ""; + const platform = typeof navigator !== "undefined" && navigator.platform || ""; + const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1; + const isAndroid = /Android/.test(userAgent); + const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; + const isIOSChrome = /CriOS/.test(userAgent); + + (function checkOnBlobSupport() { + if (isIOSChrome) { + compatibilityParams.disableCreateObjectURL = true; + } + })(); + + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + compatibilityParams.maxCanvasPixels = 5242880; + } + })(); +} +const viewerCompatibilityParams = Object.freeze(compatibilityParams); +exports.viewerCompatibilityParams = viewerCompatibilityParams; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; + +var _ui_utils = __webpack_require__(4); + +var _app_options = __webpack_require__(1); + +var _pdfjsLib = __webpack_require__(5); + +var _pdf_cursor_tools = __webpack_require__(6); + +var _pdf_rendering_queue = __webpack_require__(8); + +var _overlay_manager = __webpack_require__(9); + +var _password_prompt = __webpack_require__(10); + +var _pdf_attachment_viewer = __webpack_require__(11); + +var _pdf_document_properties = __webpack_require__(13); + +var _pdf_find_bar = __webpack_require__(14); + +var _pdf_find_controller = __webpack_require__(15); + +var _pdf_history = __webpack_require__(17); + +var _pdf_layer_viewer = __webpack_require__(18); + +var _pdf_link_service = __webpack_require__(19); + +var _pdf_outline_viewer = __webpack_require__(20); + +var _pdf_presentation_mode = __webpack_require__(21); + +var _pdf_scripting_manager = __webpack_require__(22); + +var _pdf_sidebar = __webpack_require__(23); + +var _pdf_sidebar_resizer = __webpack_require__(24); + +var _pdf_thumbnail_viewer = __webpack_require__(25); + +var _pdf_viewer = __webpack_require__(27); + +var _secondary_toolbar = __webpack_require__(35); + +var _toolbar = __webpack_require__(37); + +var _viewer_compatibility = __webpack_require__(2); + +var _view_history = __webpack_require__(38); + +const DEFAULT_SCALE_DELTA = 1.1; +const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; +const FORCE_PAGES_LOADED_TIMEOUT = 10000; +const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; +const ENABLE_PERMISSIONS_CLASS = "enablePermissions"; +const ViewOnLoad = { + UNKNOWN: -1, + PREVIOUS: 0, + INITIAL: 1 +}; +const ViewerCssTheme = { + AUTOMATIC: 0, + LIGHT: 1, + DARK: 2 +}; +const KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", "2.2", "2.3"]; +const KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", "adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", "prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", "antenna house", "aspose.cells", "fpdf"]; + +class DefaultExternalServices { + constructor() { + throw new Error("Cannot initialize DefaultExternalServices."); + } + + static updateFindControlState(data) {} + + static updateFindMatchesCount(data) {} + + static initPassiveLoading(callbacks) {} + + static async fallback(data) {} + + static reportTelemetry(data) {} + + static createDownloadManager(options) { + throw new Error("Not implemented: createDownloadManager"); + } + + static createPreferences() { + throw new Error("Not implemented: createPreferences"); + } + + static createL10n(options) { + throw new Error("Not implemented: createL10n"); + } + + static createScripting(options) { + throw new Error("Not implemented: createScripting"); + } + + static get supportsIntegratedFind() { + return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); + } + + static get supportsDocumentFonts() { + return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true); + } + + static get supportedMouseWheelZoomModifierKeys() { + return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", { + ctrlKey: true, + metaKey: true + }); + } + + static get isInAutomation() { + return (0, _pdfjsLib.shadow)(this, "isInAutomation", false); + } + +} + +exports.DefaultExternalServices = DefaultExternalServices; +const PDFViewerApplication = { + initialBookmark: document.location.hash.substring(1), + _initializedCapability: (0, _pdfjsLib.createPromiseCapability)(), + _fellback: false, + appConfig: null, + pdfDocument: null, + pdfLoadingTask: null, + printService: null, + pdfViewer: null, + pdfThumbnailViewer: null, + pdfRenderingQueue: null, + pdfPresentationMode: null, + pdfDocumentProperties: null, + pdfLinkService: null, + pdfHistory: null, + pdfSidebar: null, + pdfSidebarResizer: null, + pdfOutlineViewer: null, + pdfAttachmentViewer: null, + pdfLayerViewer: null, + pdfCursorTools: null, + pdfScriptingManager: null, + store: null, + downloadManager: null, + overlayManager: null, + preferences: null, + toolbar: null, + secondaryToolbar: null, + eventBus: null, + l10n: null, + isInitialViewSet: false, + downloadComplete: false, + isViewerEmbedded: window.parent !== window, + url: "", + baseUrl: "", + externalServices: DefaultExternalServices, + _boundEvents: Object.create(null), + documentInfo: null, + metadata: null, + _contentDispositionFilename: null, + _contentLength: null, + _saveInProgress: false, + _wheelUnusedTicks: 0, + _idleCallbacks: new Set(), + + async initialize(appConfig) { + this.preferences = this.externalServices.createPreferences(); + this.appConfig = appConfig; + await this._readPreferences(); + await this._parseHashParameters(); + + this._forceCssTheme(); + + await this._initializeL10n(); + + if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdfjsLib.LinkTarget.NONE) { + _app_options.AppOptions.set("externalLinkTarget", _pdfjsLib.LinkTarget.TOP); + } + + await this._initializeViewerComponents(); + this.bindEvents(); + this.bindWindowEvents(); + const appContainer = appConfig.appContainer || document.documentElement; + this.l10n.translate(appContainer).then(() => { + this.eventBus.dispatch("localized", { + source: this + }); + }); + + this._initializedCapability.resolve(); + }, + + async _readPreferences() { + if (_app_options.AppOptions.get("disablePreferences")) { + return; + } + + try { + _app_options.AppOptions.setAll(await this.preferences.getAll()); + } catch (reason) { + console.error(`_readPreferences: "${reason?.message}".`); + } + }, + + async _parseHashParameters() { + if (!_app_options.AppOptions.get("pdfBugEnabled")) { + return undefined; + } + + const hash = document.location.hash.substring(1); + + if (!hash) { + return undefined; + } + + const hashParams = (0, _ui_utils.parseQueryString)(hash), + waitOn = []; + + if ("disableworker" in hashParams && hashParams.disableworker === "true") { + waitOn.push(loadFakeWorker()); + } + + if ("disablerange" in hashParams) { + _app_options.AppOptions.set("disableRange", hashParams.disablerange === "true"); + } + + if ("disablestream" in hashParams) { + _app_options.AppOptions.set("disableStream", hashParams.disablestream === "true"); + } + + if ("disableautofetch" in hashParams) { + _app_options.AppOptions.set("disableAutoFetch", hashParams.disableautofetch === "true"); + } + + if ("disablefontface" in hashParams) { + _app_options.AppOptions.set("disableFontFace", hashParams.disablefontface === "true"); + } + + if ("disablehistory" in hashParams) { + _app_options.AppOptions.set("disableHistory", hashParams.disablehistory === "true"); + } + + if ("verbosity" in hashParams) { + _app_options.AppOptions.set("verbosity", hashParams.verbosity | 0); + } + + if ("textlayer" in hashParams) { + switch (hashParams.textlayer) { + case "off": + _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE); + + break; + + case "visible": + case "shadow": + case "hover": + const viewer = this.appConfig.viewerContainer; + viewer.classList.add("textLayer-" + hashParams.textlayer); + break; + } + } + + if ("pdfbug" in hashParams) { + _app_options.AppOptions.set("pdfBug", true); + + _app_options.AppOptions.set("fontExtraProperties", true); + + const enabled = hashParams.pdfbug.split(","); + waitOn.push(loadAndEnablePDFBug(enabled)); + } + + if ("locale" in hashParams) { + _app_options.AppOptions.set("locale", hashParams.locale); + } + + if (waitOn.length === 0) { + return undefined; + } + + return Promise.all(waitOn).catch(reason => { + console.error(`_parseHashParameters: "${reason.message}".`); + }); + }, + + async _initializeL10n() { + this.l10n = this.externalServices.createL10n({ + locale: _app_options.AppOptions.get("locale") + }); + const dir = await this.l10n.getDirection(); + document.getElementsByTagName("html")[0].dir = dir; + }, + + _forceCssTheme() { + const cssTheme = _app_options.AppOptions.get("viewerCssTheme"); + + if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { + return; + } + + try { + const styleSheet = document.styleSheets[0]; + const cssRules = styleSheet?.cssRules || []; + const mediaMatcher = "prefers-color-scheme"; + const mediaRule = `(${mediaMatcher}: dark)`; + const mediaRegex = new RegExp(`^@media \\(${mediaMatcher}: dark\\) {\\n\\s*([\\w\\s-.,:;/\\\\{}()]+)\\n}$`); + + for (let i = 0, ii = cssRules.length; i < ii; i++) { + const rule = cssRules[i]; + + if (rule instanceof CSSMediaRule && rule.media?.[0] === mediaRule) { + if (cssTheme === ViewerCssTheme.LIGHT) { + styleSheet.deleteRule(i); + return; + } + + const darkRules = mediaRegex.exec(rule.cssText); + + if (darkRules?.[1]) { + styleSheet.deleteRule(i); + styleSheet.insertRule(darkRules[1], i); + } + + return; + } + } + } catch (reason) { + console.error(`_forceCssTheme: "${reason?.message}".`); + } + }, + + async _initializeViewerComponents() { + const appConfig = this.appConfig; + const eventBus = appConfig.eventBus || new _ui_utils.EventBus({ + isInAutomation: this.externalServices.isInAutomation + }); + this.eventBus = eventBus; + this.overlayManager = new _overlay_manager.OverlayManager(); + const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + pdfRenderingQueue.onIdle = this._cleanup.bind(this); + this.pdfRenderingQueue = pdfRenderingQueue; + const pdfLinkService = new _pdf_link_service.PDFLinkService({ + eventBus, + externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"), + externalLinkRel: _app_options.AppOptions.get("externalLinkRel"), + ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom") + }); + this.pdfLinkService = pdfLinkService; + const downloadManager = this.externalServices.createDownloadManager(); + this.downloadManager = downloadManager; + const findController = new _pdf_find_controller.PDFFindController({ + linkService: pdfLinkService, + eventBus + }); + this.findController = findController; + const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({ + eventBus, + sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"), + scriptingFactory: this.externalServices, + docPropertiesLookup: this._scriptingDocProperties.bind(this) + }); + this.pdfScriptingManager = pdfScriptingManager; + const container = appConfig.mainContainer; + const viewer = appConfig.viewerContainer; + this.pdfViewer = new _pdf_viewer.PDFViewer({ + container, + viewer, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + downloadManager, + findController, + scriptingManager: pdfScriptingManager, + renderer: _app_options.AppOptions.get("renderer"), + l10n: this.l10n, + textLayerMode: _app_options.AppOptions.get("textLayerMode"), + imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"), + renderInteractiveForms: _app_options.AppOptions.get("renderInteractiveForms"), + enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), + useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), + maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), + enableScripting: _app_options.AppOptions.get("enableScripting") + }); + pdfRenderingQueue.setViewer(this.pdfViewer); + pdfLinkService.setViewer(this.pdfViewer); + pdfScriptingManager.setViewer(this.pdfViewer); + this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({ + container: appConfig.sidebar.thumbnailView, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + l10n: this.l10n + }); + pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); + this.pdfHistory = new _pdf_history.PDFHistory({ + linkService: pdfLinkService, + eventBus + }); + pdfLinkService.setHistory(this.pdfHistory); + + if (!this.supportsIntegratedFind) { + this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n); + } + + this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n); + this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({ + container, + eventBus, + cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") + }); + this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n); + this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus); + + if (this.supportsFullscreen) { + this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({ + container, + pdfViewer: this.pdfViewer, + eventBus + }); + } + + this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n, this.isViewerEmbedded); + this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({ + container: appConfig.sidebar.outlineView, + eventBus, + linkService: pdfLinkService + }); + this.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({ + container: appConfig.sidebar.attachmentsView, + eventBus, + downloadManager + }); + this.pdfLayerViewer = new _pdf_layer_viewer.PDFLayerViewer({ + container: appConfig.sidebar.layersView, + eventBus, + l10n: this.l10n + }); + this.pdfSidebar = new _pdf_sidebar.PDFSidebar({ + elements: appConfig.sidebar, + pdfViewer: this.pdfViewer, + pdfThumbnailViewer: this.pdfThumbnailViewer, + eventBus, + l10n: this.l10n + }); + this.pdfSidebar.onToggled = this.forceRendering.bind(this); + this.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n); + }, + + run(config) { + this.initialize(config).then(webViewerInitialized); + }, + + get initialized() { + return this._initializedCapability.settled; + }, + + get initializedPromise() { + return this._initializedCapability.promise; + }, + + zoomIn(ticks) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + + let newScale = this.pdfViewer.currentScale; + + do { + newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.ceil(newScale * 10) / 10; + newScale = Math.min(_ui_utils.MAX_SCALE, newScale); + } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE); + + this.pdfViewer.currentScaleValue = newScale; + }, + + zoomOut(ticks) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + + let newScale = this.pdfViewer.currentScale; + + do { + newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.floor(newScale * 10) / 10; + newScale = Math.max(_ui_utils.MIN_SCALE, newScale); + } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE); + + this.pdfViewer.currentScaleValue = newScale; + }, + + zoomReset() { + if (this.pdfViewer.isInPresentationMode) { + return; + } + + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + }, + + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + }, + + get page() { + return this.pdfViewer.currentPageNumber; + }, + + set page(val) { + this.pdfViewer.currentPageNumber = val; + }, + + get supportsPrinting() { + return PDFPrintServiceFactory.instance.supportsPrinting; + }, + + get supportsFullscreen() { + const doc = document.documentElement; + let support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen); + + if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false) { + support = false; + } + + return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", support); + }, + + get supportsIntegratedFind() { + return this.externalServices.supportsIntegratedFind; + }, + + get supportsDocumentFonts() { + return this.externalServices.supportsDocumentFonts; + }, + + get loadingBar() { + const bar = new _ui_utils.ProgressBar("#loadingBar"); + return (0, _pdfjsLib.shadow)(this, "loadingBar", bar); + }, + + get supportedMouseWheelZoomModifierKeys() { + return this.externalServices.supportedMouseWheelZoomModifierKeys; + }, + + initPassiveLoading() { + throw new Error("Not implemented: initPassiveLoading"); + }, + + setTitleUsingUrl(url = "") { + this.url = url; + this.baseUrl = url.split("#")[0]; + let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, ""); + + if (!title) { + try { + title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; + } catch (ex) { + title = url; + } + } + + this.setTitle(title); + }, + + setTitle(title) { + if (this.isViewerEmbedded) { + return; + } + + document.title = title; + }, + + get _docFilename() { + return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); + }, + + _cancelIdleCallbacks() { + if (!this._idleCallbacks.size) { + return; + } + + for (const callback of this._idleCallbacks) { + window.cancelIdleCallback(callback); + } + + this._idleCallbacks.clear(); + }, + + async close() { + this._unblockDocumentLoadEvent(); + + const { + container + } = this.appConfig.errorWrapper; + container.hidden = true; + + if (!this.pdfLoadingTask) { + return; + } + + if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) { + try { + await this.save({ + sourceEventType: "save" + }); + } catch (reason) {} + } + + const promises = []; + promises.push(this.pdfLoadingTask.destroy()); + this.pdfLoadingTask = null; + + if (this.pdfDocument) { + this.pdfDocument = null; + this.pdfThumbnailViewer.setDocument(null); + this.pdfViewer.setDocument(null); + this.pdfLinkService.setDocument(null); + this.pdfDocumentProperties.setDocument(null); + } + + webViewerResetPermissions(); + this.pdfLinkService.externalLinkEnabled = true; + this._fellback = false; + this.store = null; + this.isInitialViewSet = false; + this.downloadComplete = false; + this.url = ""; + this.baseUrl = ""; + this.documentInfo = null; + this.metadata = null; + this._contentDispositionFilename = null; + this._contentLength = null; + this._saveInProgress = false; + + this._cancelIdleCallbacks(); + + promises.push(this.pdfScriptingManager.destroyPromise); + this.pdfSidebar.reset(); + this.pdfOutlineViewer.reset(); + this.pdfAttachmentViewer.reset(); + this.pdfLayerViewer.reset(); + + if (this.pdfHistory) { + this.pdfHistory.reset(); + } + + if (this.findBar) { + this.findBar.reset(); + } + + this.toolbar.reset(); + this.secondaryToolbar.reset(); + + if (typeof PDFBug !== "undefined") { + PDFBug.cleanup(); + } + + await Promise.all(promises); + }, + + async open(file, args) { + if (this.pdfLoadingTask) { + await this.close(); + } + + const workerParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); + + for (const key in workerParameters) { + _pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key]; + } + + const parameters = Object.create(null); + + if (typeof file === "string") { + this.setTitleUsingUrl(file); + parameters.url = file; + } else if (file && "byteLength" in file) { + parameters.data = file; + } else if (file.url && file.originalUrl) { + this.setTitleUsingUrl(file.originalUrl); + parameters.url = file.url; + } + + const apiParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.API); + + for (const key in apiParameters) { + let value = apiParameters[key]; + + if (key === "docBaseUrl" && !value) {} + + parameters[key] = value; + } + + if (args) { + for (const key in args) { + parameters[key] = args[key]; + } + } + + const loadingTask = (0, _pdfjsLib.getDocument)(parameters); + this.pdfLoadingTask = loadingTask; + + loadingTask.onPassword = (updateCallback, reason) => { + this.pdfLinkService.externalLinkEnabled = false; + this.passwordPrompt.setUpdateCallback(updateCallback, reason); + this.passwordPrompt.open(); + }; + + loadingTask.onProgress = ({ + loaded, + total + }) => { + this.progress(loaded / total); + }; + + loadingTask.onUnsupportedFeature = this.fallback.bind(this); + return loadingTask.promise.then(pdfDocument => { + this.load(pdfDocument); + }, exception => { + if (loadingTask !== this.pdfLoadingTask) { + return undefined; + } + + let key = "loading_error"; + + if (exception instanceof _pdfjsLib.InvalidPDFException) { + key = "invalid_file_error"; + } else if (exception instanceof _pdfjsLib.MissingPDFException) { + key = "missing_file_error"; + } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) { + key = "unexpected_response_error"; + } + + return this.l10n.get(key).then(msg => { + this._documentError(msg, { + message: exception?.message + }); + + throw exception; + }); + }); + }, + + _ensureDownloadComplete() { + if (this.pdfDocument && this.downloadComplete) { + return; + } + + throw new Error("PDF document not downloaded."); + }, + + async download({ + sourceEventType = "download" + } = {}) { + const url = this.baseUrl, + filename = this._docFilename; + + try { + this._ensureDownloadComplete(); + + const data = await this.pdfDocument.getData(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename, sourceEventType); + } catch (reason) { + await this.downloadManager.downloadUrl(url, filename); + } + }, + + async save({ + sourceEventType = "download" + } = {}) { + if (this._saveInProgress) { + return; + } + + this._saveInProgress = true; + await this.pdfScriptingManager.dispatchWillSave(); + const url = this.baseUrl, + filename = this._docFilename; + + try { + this._ensureDownloadComplete(); + + const data = await this.pdfDocument.saveDocument(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename, sourceEventType); + } catch (reason) { + await this.download({ + sourceEventType + }); + } finally { + await this.pdfScriptingManager.dispatchDidSave(); + this._saveInProgress = false; + } + }, + + downloadOrSave(options) { + if (this.pdfDocument?.annotationStorage.size > 0) { + this.save(options); + } else { + this.download(options); + } + }, + + fallback(featureId) { + this.externalServices.reportTelemetry({ + type: "unsupportedFeature", + featureId + }); + + if (this._fellback) { + return; + } + + this._fellback = true; + this.externalServices.fallback({ + featureId, + url: this.baseUrl + }).then(download => { + if (!download) { + return; + } + + this.download({ + sourceEventType: "download" + }); + }); + }, + + _documentError(message, moreInfo = null) { + this._unblockDocumentLoadEvent(); + + this._otherError(message, moreInfo); + }, + + _otherError(message, moreInfo = null) { + const moreInfoText = [this.l10n.get("error_version_info", { + version: _pdfjsLib.version || "?", + build: _pdfjsLib.build || "?" + })]; + + if (moreInfo) { + moreInfoText.push(this.l10n.get("error_message", { + message: moreInfo.message + })); + + if (moreInfo.stack) { + moreInfoText.push(this.l10n.get("error_stack", { + stack: moreInfo.stack + })); + } else { + if (moreInfo.filename) { + moreInfoText.push(this.l10n.get("error_file", { + file: moreInfo.filename + })); + } + + if (moreInfo.lineNumber) { + moreInfoText.push(this.l10n.get("error_line", { + line: moreInfo.lineNumber + })); + } + } + } + + const errorWrapperConfig = this.appConfig.errorWrapper; + const errorWrapper = errorWrapperConfig.container; + errorWrapper.hidden = false; + const errorMessage = errorWrapperConfig.errorMessage; + errorMessage.textContent = message; + const closeButton = errorWrapperConfig.closeButton; + + closeButton.onclick = function () { + errorWrapper.hidden = true; + }; + + const errorMoreInfo = errorWrapperConfig.errorMoreInfo; + const moreInfoButton = errorWrapperConfig.moreInfoButton; + const lessInfoButton = errorWrapperConfig.lessInfoButton; + + moreInfoButton.onclick = function () { + errorMoreInfo.hidden = false; + moreInfoButton.hidden = true; + lessInfoButton.hidden = false; + errorMoreInfo.style.height = errorMoreInfo.scrollHeight + "px"; + }; + + lessInfoButton.onclick = function () { + errorMoreInfo.hidden = true; + moreInfoButton.hidden = false; + lessInfoButton.hidden = true; + }; + + moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; + lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; + closeButton.oncontextmenu = _ui_utils.noContextMenuHandler; + moreInfoButton.hidden = false; + lessInfoButton.hidden = true; + Promise.all(moreInfoText).then(parts => { + errorMoreInfo.value = parts.join("\n"); + }); + }, + + progress(level) { + if (this.downloadComplete) { + return; + } + + const percent = Math.round(level * 100); + + if (percent > this.loadingBar.percent || isNaN(percent)) { + this.loadingBar.percent = percent; + const disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams.disableAutoFetch : _app_options.AppOptions.get("disableAutoFetch"); + + if (disableAutoFetch && percent) { + if (this.disableAutoFetchLoadingBarTimeout) { + clearTimeout(this.disableAutoFetchLoadingBarTimeout); + this.disableAutoFetchLoadingBarTimeout = null; + } + + this.loadingBar.show(); + this.disableAutoFetchLoadingBarTimeout = setTimeout(() => { + this.loadingBar.hide(); + this.disableAutoFetchLoadingBarTimeout = null; + }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); + } + } + }, + + load(pdfDocument) { + this.pdfDocument = pdfDocument; + pdfDocument.getDownloadInfo().then(({ + length + }) => { + this._contentLength = length; + this.downloadComplete = true; + this.loadingBar.hide(); + firstPagePromise.then(() => { + this.eventBus.dispatch("documentloaded", { + source: this + }); + }); + }); + const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {}); + const pageModePromise = pdfDocument.getPageMode().catch(function () {}); + const openActionPromise = pdfDocument.getOpenAction().catch(function () {}); + this.toolbar.setPagesCount(pdfDocument.numPages, false); + this.secondaryToolbar.setPagesCount(pdfDocument.numPages); + let baseDocumentUrl; + baseDocumentUrl = null; + this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); + this.pdfDocumentProperties.setDocument(pdfDocument, this.url); + const pdfViewer = this.pdfViewer; + pdfViewer.setDocument(pdfDocument); + const { + firstPagePromise, + onePageRendered, + pagesPromise + } = pdfViewer; + const pdfThumbnailViewer = this.pdfThumbnailViewer; + pdfThumbnailViewer.setDocument(pdfDocument); + const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({ + page: null, + zoom: _ui_utils.DEFAULT_SCALE_VALUE, + scrollLeft: "0", + scrollTop: "0", + rotation: null, + sidebarView: _ui_utils.SidebarView.UNKNOWN, + scrollMode: _ui_utils.ScrollMode.UNKNOWN, + spreadMode: _ui_utils.SpreadMode.UNKNOWN + }).catch(() => { + return Object.create(null); + }); + firstPagePromise.then(pdfPage => { + this.loadingBar.setWidth(this.appConfig.viewerContainer); + + this._initializeAnnotationStorageCallbacks(pdfDocument); + + Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => { + const viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); + + this._initializePdfHistory({ + fingerprint: pdfDocument.fingerprints[0], + viewOnLoad, + initialDest: openAction?.dest + }); + + const initialBookmark = this.initialBookmark; + + const zoom = _app_options.AppOptions.get("defaultZoomValue"); + + let hash = zoom ? `zoom=${zoom}` : null; + let rotation = null; + + let sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad"); + + let scrollMode = _app_options.AppOptions.get("scrollModeOnLoad"); + + let spreadMode = _app_options.AppOptions.get("spreadModeOnLoad"); + + if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) { + hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`; + rotation = parseInt(stored.rotation, 10); + + if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = stored.sidebarView | 0; + } + + if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) { + scrollMode = stored.scrollMode | 0; + } + + if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + spreadMode = stored.spreadMode | 0; + } + } + + if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode); + } + + if (pageLayout && spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(pageLayout); + } + + this.setInitialView(hash, { + rotation, + sidebarView, + scrollMode, + spreadMode + }); + this.eventBus.dispatch("documentinit", { + source: this + }); + + if (!this.isViewerEmbedded) { + pdfViewer.focus(); + } + + this._initializePermissions(pdfDocument); + + await Promise.race([pagesPromise, new Promise(resolve => { + setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT); + })]); + + if (!initialBookmark && !hash) { + return; + } + + if (pdfViewer.hasEqualPageSizes) { + return; + } + + this.initialBookmark = initialBookmark; + pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; + this.setInitialView(hash); + }).catch(() => { + this.setInitialView(); + }).then(function () { + pdfViewer.update(); + }); + }); + pagesPromise.then(() => { + this._unblockDocumentLoadEvent(); + + this._initializeAutoPrint(pdfDocument, openActionPromise); + }); + onePageRendered.then(() => { + pdfDocument.getOutline().then(outline => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.pdfOutlineViewer.render({ + outline, + pdfDocument + }); + }); + pdfDocument.getAttachments().then(attachments => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.pdfAttachmentViewer.render({ + attachments + }); + }); + pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.pdfLayerViewer.render({ + optionalContentConfig, + pdfDocument + }); + }); + + if ("requestIdleCallback" in window) { + const callback = window.requestIdleCallback(() => { + this._collectTelemetry(pdfDocument); + + this._idleCallbacks.delete(callback); + }, { + timeout: 1000 + }); + + this._idleCallbacks.add(callback); + } + }); + + this._initializePageLabels(pdfDocument); + + this._initializeMetadata(pdfDocument); + }, + + async _scriptingDocProperties(pdfDocument) { + if (!this.documentInfo) { + await new Promise(resolve => { + this.eventBus._on("metadataloaded", resolve, { + once: true + }); + }); + + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + + if (!this._contentLength) { + await new Promise(resolve => { + this.eventBus._on("documentloaded", resolve, { + once: true + }); + }); + + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + + return { ...this.documentInfo, + baseURL: this.baseUrl, + filesize: this._contentLength, + filename: this._docFilename, + metadata: this.metadata?.getRaw(), + authors: this.metadata?.get("dc:creator"), + numPages: this.pagesCount, + URL: this.url + }; + }, + + async _collectTelemetry(pdfDocument) { + const markInfo = await this.pdfDocument.getMarkInfo(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + const tagged = markInfo?.Marked || false; + this.externalServices.reportTelemetry({ + type: "tagged", + tagged + }); + }, + + async _initializeAutoPrint(pdfDocument, openActionPromise) { + const [openAction, javaScript] = await Promise.all([openActionPromise, !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null]); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + let triggerAutoPrint = false; + + if (openAction?.action === "Print") { + triggerAutoPrint = true; + } + + if (javaScript) { + javaScript.some(js => { + if (!js) { + return false; + } + + console.warn("Warning: JavaScript support is not enabled"); + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript); + return true; + }); + + if (!triggerAutoPrint) { + for (const js of javaScript) { + if (js && _ui_utils.AutoPrintRegExp.test(js)) { + triggerAutoPrint = true; + break; + } + } + } + } + + if (triggerAutoPrint) { + this.triggerPrinting(); + } + }, + + async _initializeMetadata(pdfDocument) { + const { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.documentInfo = info; + this.metadata = metadata; + this._contentDispositionFilename ?? (this._contentDispositionFilename = contentDispositionFilename); + this._contentLength ?? (this._contentLength = contentLength); + console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"})`); + let pdfTitle = info?.Title; + const metadataTitle = metadata?.get("dc:title"); + + if (metadataTitle) { + if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) { + pdfTitle = metadataTitle; + } + } + + if (pdfTitle) { + this.setTitle(`${pdfTitle} - ${contentDispositionFilename || document.title}`); + } else if (contentDispositionFilename) { + this.setTitle(contentDispositionFilename); + } + + if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) { + console.warn("Warning: XFA support is not enabled"); + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); + } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderInteractiveForms) { + console.warn("Warning: Interactive form support is not enabled"); + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); + } + + if (info.IsSignaturesPresent) { + console.warn("Warning: Digital signatures validation is not supported"); + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.signatures); + } + + let versionId = "other"; + + if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) { + versionId = `v${info.PDFFormatVersion.replace(".", "_")}`; + } + + let generatorId = "other"; + + if (info.Producer) { + const producer = info.Producer.toLowerCase(); + KNOWN_GENERATORS.some(function (generator) { + if (!producer.includes(generator)) { + return false; + } + + generatorId = generator.replace(/[ .-]/g, "_"); + return true; + }); + } + + let formType = null; + + if (info.IsXFAPresent) { + formType = "xfa"; + } else if (info.IsAcroFormPresent) { + formType = "acroform"; + } + + this.externalServices.reportTelemetry({ + type: "documentInfo", + version: versionId, + generator: generatorId, + formType + }); + this.eventBus.dispatch("metadataloaded", { + source: this + }); + }, + + async _initializePageLabels(pdfDocument) { + const labels = await pdfDocument.getPageLabels(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + if (!labels || _app_options.AppOptions.get("disablePageLabels")) { + return; + } + + const numLabels = labels.length; + + if (numLabels !== this.pagesCount) { + console.error("The number of Page Labels does not match the number of pages in the document."); + return; + } + + let i = 0; + + while (i < numLabels && labels[i] === (i + 1).toString()) { + i++; + } + + if (i === numLabels) { + return; + } + + const { + pdfViewer, + pdfThumbnailViewer, + toolbar + } = this; + pdfViewer.setPageLabels(labels); + pdfThumbnailViewer.setPageLabels(labels); + toolbar.setPagesCount(numLabels, true); + toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + }, + + _initializePdfHistory({ + fingerprint, + viewOnLoad, + initialDest = null + }) { + if (this.isViewerEmbedded || _app_options.AppOptions.get("disableHistory")) { + return; + } + + this.pdfHistory.initialize({ + fingerprint, + resetHistory: viewOnLoad === ViewOnLoad.INITIAL, + updateUrl: _app_options.AppOptions.get("historyUpdateUrl") + }); + + if (this.pdfHistory.initialBookmark) { + this.initialBookmark = this.pdfHistory.initialBookmark; + this.initialRotation = this.pdfHistory.initialRotation; + } + + if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) { + this.initialBookmark = JSON.stringify(initialDest); + this.pdfHistory.push({ + explicitDest: initialDest, + pageNumber: null + }); + } + }, + + async _initializePermissions(pdfDocument) { + const permissions = await pdfDocument.getPermissions(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + if (!permissions || !_app_options.AppOptions.get("enablePermissions")) { + return; + } + + if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) { + this.appConfig.viewerContainer.classList.add(ENABLE_PERMISSIONS_CLASS); + } + }, + + _initializeAnnotationStorageCallbacks(pdfDocument) { + if (pdfDocument !== this.pdfDocument) { + return; + } + + const { + annotationStorage + } = pdfDocument; + + annotationStorage.onSetModified = () => { + window.addEventListener("beforeunload", beforeUnload); + this._annotationStorageModified = true; + }; + + annotationStorage.onResetModified = () => { + window.removeEventListener("beforeunload", beforeUnload); + delete this._annotationStorageModified; + }; + }, + + setInitialView(storedHash, { + rotation, + sidebarView, + scrollMode, + spreadMode + } = {}) { + const setRotation = angle => { + if ((0, _ui_utils.isValidRotation)(angle)) { + this.pdfViewer.pagesRotation = angle; + } + }; + + const setViewerModes = (scroll, spread) => { + if ((0, _ui_utils.isValidScrollMode)(scroll)) { + this.pdfViewer.scrollMode = scroll; + } + + if ((0, _ui_utils.isValidSpreadMode)(spread)) { + this.pdfViewer.spreadMode = spread; + } + }; + + this.isInitialViewSet = true; + this.pdfSidebar.setInitialView(sidebarView); + setViewerModes(scrollMode, spreadMode); + + if (this.initialBookmark) { + setRotation(this.initialRotation); + delete this.initialRotation; + this.pdfLinkService.setHash(this.initialBookmark); + this.initialBookmark = null; + } else if (storedHash) { + setRotation(rotation); + this.pdfLinkService.setHash(storedHash); + } + + this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); + this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber); + + if (!this.pdfViewer.currentScaleValue) { + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + }, + + _cleanup() { + if (!this.pdfDocument) { + return; + } + + this.pdfViewer.cleanup(); + this.pdfThumbnailViewer.cleanup(); + this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG); + }, + + forceRendering() { + this.pdfRenderingQueue.printing = !!this.printService; + this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible; + this.pdfRenderingQueue.renderHighestPriority(); + }, + + beforePrint() { + this.pdfScriptingManager.dispatchWillPrint(); + + if (this.printService) { + return; + } + + if (!this.supportsPrinting) { + this.l10n.get("printing_not_supported").then(msg => { + this._otherError(msg); + }); + return; + } + + if (!this.pdfViewer.pageViewsReady) { + this.l10n.get("printing_not_ready").then(msg => { + window.alert(msg); + }); + return; + } + + const pagesOverview = this.pdfViewer.getPagesOverview(); + const printContainer = this.appConfig.printContainer; + + const printResolution = _app_options.AppOptions.get("printResolution"); + + const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise; + const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this.l10n); + this.printService = printService; + this.forceRendering(); + printService.layout(); + this.externalServices.reportTelemetry({ + type: "print" + }); + }, + + afterPrint() { + this.pdfScriptingManager.dispatchDidPrint(); + + if (this.printService) { + this.printService.destroy(); + this.printService = null; + + if (this.pdfDocument) { + this.pdfDocument.annotationStorage.resetModified(); + } + } + + this.forceRendering(); + }, + + rotatePages(delta) { + this.pdfViewer.pagesRotation += delta; + }, + + requestPresentationMode() { + if (!this.pdfPresentationMode) { + return; + } + + this.pdfPresentationMode.request(); + }, + + triggerPrinting() { + if (!this.supportsPrinting) { + return; + } + + // window.print(); + }, + + bindEvents() { + const { + eventBus, + _boundEvents + } = this; + _boundEvents.beforePrint = this.beforePrint.bind(this); + _boundEvents.afterPrint = this.afterPrint.bind(this); + + eventBus._on("resize", webViewerResize); + + eventBus._on("hashchange", webViewerHashchange); + + eventBus._on("beforeprint", _boundEvents.beforePrint); + + eventBus._on("afterprint", _boundEvents.afterPrint); + + eventBus._on("pagerendered", webViewerPageRendered); + + eventBus._on("updateviewarea", webViewerUpdateViewarea); + + eventBus._on("pagechanging", webViewerPageChanging); + + eventBus._on("scalechanging", webViewerScaleChanging); + + eventBus._on("rotationchanging", webViewerRotationChanging); + + eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged); + + eventBus._on("pagemode", webViewerPageMode); + + eventBus._on("namedaction", webViewerNamedAction); + + eventBus._on("presentationmodechanged", webViewerPresentationModeChanged); + + eventBus._on("presentationmode", webViewerPresentationMode); + + eventBus._on("print", webViewerPrint); + + eventBus._on("download", webViewerDownload); + + eventBus._on("save", webViewerSave); + + eventBus._on("firstpage", webViewerFirstPage); + + eventBus._on("lastpage", webViewerLastPage); + + eventBus._on("nextpage", webViewerNextPage); + + eventBus._on("previouspage", webViewerPreviousPage); + + eventBus._on("zoomin", webViewerZoomIn); + + eventBus._on("zoomout", webViewerZoomOut); + + eventBus._on("zoomreset", webViewerZoomReset); + + eventBus._on("pagenumberchanged", webViewerPageNumberChanged); + + eventBus._on("scalechanged", webViewerScaleChanged); + + eventBus._on("rotatecw", webViewerRotateCw); + + eventBus._on("rotateccw", webViewerRotateCcw); + + eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig); + + eventBus._on("switchscrollmode", webViewerSwitchScrollMode); + + eventBus._on("scrollmodechanged", webViewerScrollModeChanged); + + eventBus._on("switchspreadmode", webViewerSwitchSpreadMode); + + eventBus._on("spreadmodechanged", webViewerSpreadModeChanged); + + eventBus._on("documentproperties", webViewerDocumentProperties); + + eventBus._on("find", webViewerFind); + + eventBus._on("findfromurlhash", webViewerFindFromUrlHash); + + eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount); + + eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); + + if (_app_options.AppOptions.get("pdfBug")) { + _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; + + eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); + + eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); + } + + eventBus._on("fileinputchange", webViewerFileInputChange); + + eventBus._on("openfile", webViewerOpenFile); + }, + + bindWindowEvents() { + const { + eventBus, + _boundEvents + } = this; + + _boundEvents.windowResize = () => { + eventBus.dispatch("resize", { + source: window + }); + }; + + _boundEvents.windowHashChange = () => { + eventBus.dispatch("hashchange", { + source: window, + hash: document.location.hash.substring(1) + }); + }; + + _boundEvents.windowBeforePrint = () => { + eventBus.dispatch("beforeprint", { + source: window + }); + }; + + _boundEvents.windowAfterPrint = () => { + eventBus.dispatch("afterprint", { + source: window + }); + }; + + _boundEvents.windowUpdateFromSandbox = event => { + eventBus.dispatch("updatefromsandbox", { + source: window, + detail: event.detail + }); + }; + + window.addEventListener("visibilitychange", webViewerVisibilityChange); + window.addEventListener("wheel", webViewerWheel, { + passive: false + }); + window.addEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.addEventListener("click", webViewerClick); + window.addEventListener("keydown", webViewerKeyDown); + window.addEventListener("resize", _boundEvents.windowResize); + window.addEventListener("hashchange", _boundEvents.windowHashChange); + window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.addEventListener("afterprint", _boundEvents.windowAfterPrint); + window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + }, + + unbindEvents() { + const { + eventBus, + _boundEvents + } = this; + + eventBus._off("resize", webViewerResize); + + eventBus._off("hashchange", webViewerHashchange); + + eventBus._off("beforeprint", _boundEvents.beforePrint); + + eventBus._off("afterprint", _boundEvents.afterPrint); + + eventBus._off("pagerendered", webViewerPageRendered); + + eventBus._off("updateviewarea", webViewerUpdateViewarea); + + eventBus._off("pagechanging", webViewerPageChanging); + + eventBus._off("scalechanging", webViewerScaleChanging); + + eventBus._off("rotationchanging", webViewerRotationChanging); + + eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged); + + eventBus._off("pagemode", webViewerPageMode); + + eventBus._off("namedaction", webViewerNamedAction); + + eventBus._off("presentationmodechanged", webViewerPresentationModeChanged); + + eventBus._off("presentationmode", webViewerPresentationMode); + + eventBus._off("print", webViewerPrint); + + eventBus._off("download", webViewerDownload); + + eventBus._off("save", webViewerSave); + + eventBus._off("firstpage", webViewerFirstPage); + + eventBus._off("lastpage", webViewerLastPage); + + eventBus._off("nextpage", webViewerNextPage); + + eventBus._off("previouspage", webViewerPreviousPage); + + eventBus._off("zoomin", webViewerZoomIn); + + eventBus._off("zoomout", webViewerZoomOut); + + eventBus._off("zoomreset", webViewerZoomReset); + + eventBus._off("pagenumberchanged", webViewerPageNumberChanged); + + eventBus._off("scalechanged", webViewerScaleChanged); + + eventBus._off("rotatecw", webViewerRotateCw); + + eventBus._off("rotateccw", webViewerRotateCcw); + + eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig); + + eventBus._off("switchscrollmode", webViewerSwitchScrollMode); + + eventBus._off("scrollmodechanged", webViewerScrollModeChanged); + + eventBus._off("switchspreadmode", webViewerSwitchSpreadMode); + + eventBus._off("spreadmodechanged", webViewerSpreadModeChanged); + + eventBus._off("documentproperties", webViewerDocumentProperties); + + eventBus._off("find", webViewerFind); + + eventBus._off("findfromurlhash", webViewerFindFromUrlHash); + + eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount); + + eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); + + if (_boundEvents.reportPageStatsPDFBug) { + eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); + + eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); + + _boundEvents.reportPageStatsPDFBug = null; + } + + eventBus._off("fileinputchange", webViewerFileInputChange); + + eventBus._off("openfile", webViewerOpenFile); + + _boundEvents.beforePrint = null; + _boundEvents.afterPrint = null; + }, + + unbindWindowEvents() { + const { + _boundEvents + } = this; + window.removeEventListener("visibilitychange", webViewerVisibilityChange); + window.removeEventListener("wheel", webViewerWheel, { + passive: false + }); + window.removeEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.removeEventListener("click", webViewerClick); + window.removeEventListener("keydown", webViewerKeyDown); + window.removeEventListener("resize", _boundEvents.windowResize); + window.removeEventListener("hashchange", _boundEvents.windowHashChange); + window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); + window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + _boundEvents.windowResize = null; + _boundEvents.windowHashChange = null; + _boundEvents.windowBeforePrint = null; + _boundEvents.windowAfterPrint = null; + _boundEvents.windowUpdateFromSandbox = null; + }, + + accumulateWheelTicks(ticks) { + if (this._wheelUnusedTicks > 0 && ticks < 0 || this._wheelUnusedTicks < 0 && ticks > 0) { + this._wheelUnusedTicks = 0; + } + + this._wheelUnusedTicks += ticks; + const wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks)); + this._wheelUnusedTicks -= wholeTicks; + return wholeTicks; + }, + + _unblockDocumentLoadEvent() { + if (document.blockUnblockOnload) { + document.blockUnblockOnload(false); + } + + this._unblockDocumentLoadEvent = () => {}; + }, + + get scriptingReady() { + return this.pdfScriptingManager.ready; + } + +}; +exports.PDFViewerApplication = PDFViewerApplication; +let validateFileURL; +{ + const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; + + validateFileURL = function (file) { + if (file === undefined) { + return; + } + + try { + const viewerOrigin = new URL(window.location.href).origin || "null"; + + if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) { + return; + } + + const { + origin, + protocol + } = new URL(file, window.location.href); + + if (origin !== viewerOrigin && protocol !== "blob:") { + throw new Error("file origin does not match viewer's"); + } + } catch (ex) { + PDFViewerApplication.l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, { + message: ex?.message + }); + }); + throw ex; + } + }; +} + +async function loadFakeWorker() { + if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) { + _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get("workerSrc"); + } + + return (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc()); +} + +function loadAndEnablePDFBug(enabledTabs) { + const appConfig = PDFViewerApplication.appConfig; + return (0, _pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function () { + PDFBug.enable(enabledTabs); + PDFBug.init({ + OPS: _pdfjsLib.OPS + }, appConfig.mainContainer); + }); +} + +function reportPageStatsPDFBug({ + pageNumber +}) { + if (typeof Stats === "undefined" || !Stats.enabled) { + return; + } + + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const pageStats = pageView?.pdfPage?.stats; + + if (!pageStats) { + return; + } + + Stats.add(pageNumber, pageStats); +} + +function webViewerInitialized() { + const appConfig = PDFViewerApplication.appConfig; + let file; + const queryString = document.location.search.substring(1); + const params = (0, _ui_utils.parseQueryString)(queryString); + file = "file" in params ? params.file : _app_options.AppOptions.get("defaultUrl"); + validateFileURL(file); + const fileInput = document.createElement("input"); + fileInput.id = appConfig.openFileInputName; + fileInput.className = "fileInput"; + fileInput.setAttribute("type", "file"); + fileInput.oncontextmenu = _ui_utils.noContextMenuHandler; + document.body.appendChild(fileInput); + + if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { + appConfig.toolbar.openFile.hidden = true; + appConfig.secondaryToolbar.openFileButton.hidden = true; + } else { + fileInput.value = null; + } + + fileInput.addEventListener("change", function (evt) { + const files = evt.target.files; + + if (!files || files.length === 0) { + return; + } + + PDFViewerApplication.eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.target + }); + }); + appConfig.mainContainer.addEventListener("dragover", function (evt) { + evt.preventDefault(); + evt.dataTransfer.dropEffect = "move"; + }); + appConfig.mainContainer.addEventListener("drop", function (evt) { + evt.preventDefault(); + const files = evt.dataTransfer.files; + + if (!files || files.length === 0) { + return; + } + + PDFViewerApplication.eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.dataTransfer + }); + }); + + if (!PDFViewerApplication.supportsDocumentFonts) { + _app_options.AppOptions.set("disableFontFace", true); + + PDFViewerApplication.l10n.get("web_fonts_disabled").then(msg => { + console.warn(msg); + }); + } + + if (!PDFViewerApplication.supportsPrinting) { + appConfig.toolbar.print.classList.add("hidden"); + appConfig.secondaryToolbar.printButton.classList.add("hidden"); + } + + if (!PDFViewerApplication.supportsFullscreen) { + appConfig.toolbar.presentationModeButton.classList.add("hidden"); + appConfig.secondaryToolbar.presentationModeButton.classList.add("hidden"); + } + + if (PDFViewerApplication.supportsIntegratedFind) { + appConfig.toolbar.viewFind.classList.add("hidden"); + } + + appConfig.mainContainer.addEventListener("transitionend", function (evt) { + if (evt.target === this) { + PDFViewerApplication.eventBus.dispatch("resize", { + source: this + }); + } + }, true); + + try { + webViewerOpenFileViaURL(file); + } catch (reason) { + PDFViewerApplication.l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, reason); + }); + } +} + +function webViewerOpenFileViaURL(file) { + if (file) { + PDFViewerApplication.open(file); + } +} + +function webViewerResetPermissions() { + const { + appConfig + } = PDFViewerApplication; + + if (!appConfig) { + return; + } + + appConfig.viewerContainer.classList.remove(ENABLE_PERMISSIONS_CLASS); +} + +function webViewerPageRendered({ + pageNumber, + timestamp, + error +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar.updateLoadingIndicatorState(false); + } + + if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageNumber - 1); + + if (pageView && thumbnailView) { + thumbnailView.setImage(pageView); + } + } + + if (error) { + PDFViewerApplication.l10n.get("rendering_error").then(msg => { + PDFViewerApplication._otherError(msg, error); + }); + } + + PDFViewerApplication.externalServices.reportTelemetry({ + type: "pageInfo", + timestamp + }); + PDFViewerApplication.pdfDocument.getStats().then(function (stats) { + PDFViewerApplication.externalServices.reportTelemetry({ + type: "documentStats", + stats + }); + }); +} + +function webViewerPageMode({ + mode +}) { + let view; + + switch (mode) { + case "thumbs": + view = _ui_utils.SidebarView.THUMBS; + break; + + case "bookmarks": + case "outline": + view = _ui_utils.SidebarView.OUTLINE; + break; + + case "attachments": + view = _ui_utils.SidebarView.ATTACHMENTS; + break; + + case "layers": + view = _ui_utils.SidebarView.LAYERS; + break; + + case "none": + view = _ui_utils.SidebarView.NONE; + break; + + default: + console.error('Invalid "pagemode" hash parameter: ' + mode); + return; + } + + PDFViewerApplication.pdfSidebar.switchView(view, true); +} + +function webViewerNamedAction(evt) { + switch (evt.action) { + case "GoToPage": + PDFViewerApplication.appConfig.toolbar.pageNumber.select(); + break; + + case "Find": + if (!PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.findBar.toggle(); + } + + break; + + case "Print": + PDFViewerApplication.triggerPrinting(); + break; + + case "SaveAs": + webViewerSave(); + break; + } +} + +function webViewerPresentationModeChanged(evt) { + PDFViewerApplication.pdfViewer.presentationModeState = evt.state; +} + +function webViewerSidebarViewChanged(evt) { + PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible; + const store = PDFViewerApplication.store; + + if (store && PDFViewerApplication.isInitialViewSet) { + store.set("sidebarView", evt.view).catch(function () {}); + } +} + +function webViewerUpdateViewarea(evt) { + const location = evt.location, + store = PDFViewerApplication.store; + + if (store && PDFViewerApplication.isInitialViewSet) { + store.setMultiple({ + page: location.pageNumber, + zoom: location.scale, + scrollLeft: location.left, + scrollTop: location.top, + rotation: location.rotation + }).catch(function () {}); + } + + const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); + PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href; + PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; + const currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); + const loading = currentPage?.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED; + PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading); +} + +function webViewerScrollModeChanged(evt) { + const store = PDFViewerApplication.store; + + if (store && PDFViewerApplication.isInitialViewSet) { + store.set("scrollMode", evt.mode).catch(function () {}); + } +} + +function webViewerSpreadModeChanged(evt) { + const store = PDFViewerApplication.store; + + if (store && PDFViewerApplication.isInitialViewSet) { + store.set("spreadMode", evt.mode).catch(function () {}); + } +} + +function webViewerResize() { + const { + pdfDocument, + pdfViewer + } = PDFViewerApplication; + + if (!pdfDocument) { + return; + } + + const currentScaleValue = pdfViewer.currentScaleValue; + + if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") { + pdfViewer.currentScaleValue = currentScaleValue; + } + + pdfViewer.update(); +} + +function webViewerHashchange(evt) { + const hash = evt.hash; + + if (!hash) { + return; + } + + if (!PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.initialBookmark = hash; + } else if (!PDFViewerApplication.pdfHistory.popStateInProgress) { + PDFViewerApplication.pdfLinkService.setHash(hash); + } +} + +let webViewerFileInputChange, webViewerOpenFile; +{ + webViewerFileInputChange = function (evt) { + if (PDFViewerApplication.pdfViewer?.isInPresentationMode) { + return; + } + + const file = evt.fileInput.files[0]; + + if (!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { + let url = URL.createObjectURL(file); + + if (file.name) { + url = { + url, + originalUrl: file.name + }; + } + + PDFViewerApplication.open(url); + } else { + PDFViewerApplication.setTitleUsingUrl(file.name); + const fileReader = new FileReader(); + + fileReader.onload = function webViewerChangeFileReaderOnload(event) { + const buffer = event.target.result; + PDFViewerApplication.open(new Uint8Array(buffer)); + }; + + fileReader.readAsArrayBuffer(file); + } + + const appConfig = PDFViewerApplication.appConfig; + appConfig.toolbar.viewBookmark.hidden = true; + appConfig.secondaryToolbar.viewBookmarkButton.hidden = true; + appConfig.toolbar.download.hidden = true; + appConfig.secondaryToolbar.downloadButton.hidden = true; + }; + + webViewerOpenFile = function (evt) { + const openFileInputName = PDFViewerApplication.appConfig.openFileInputName; + document.getElementById(openFileInputName).click(); + }; +} + +function webViewerPresentationMode() { + PDFViewerApplication.requestPresentationMode(); +} + +function webViewerPrint() { + PDFViewerApplication.triggerPrinting(); +} + +function webViewerDownload() { + PDFViewerApplication.downloadOrSave({ + sourceEventType: "download" + }); +} + +function webViewerSave() { + PDFViewerApplication.downloadOrSave({ + sourceEventType: "save" + }); +} + +function webViewerFirstPage() { + if (PDFViewerApplication.pdfDocument) { + PDFViewerApplication.page = 1; + } +} + +function webViewerLastPage() { + if (PDFViewerApplication.pdfDocument) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + } +} + +function webViewerNextPage() { + PDFViewerApplication.pdfViewer.nextPage(); +} + +function webViewerPreviousPage() { + PDFViewerApplication.pdfViewer.previousPage(); +} + +function webViewerZoomIn() { + PDFViewerApplication.zoomIn(); +} + +function webViewerZoomOut() { + PDFViewerApplication.zoomOut(); +} + +function webViewerZoomReset() { + PDFViewerApplication.zoomReset(); +} + +function webViewerPageNumberChanged(evt) { + const pdfViewer = PDFViewerApplication.pdfViewer; + + if (evt.value !== "") { + PDFViewerApplication.pdfLinkService.goToPage(evt.value); + } + + if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { + PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + } +} + +function webViewerScaleChanged(evt) { + PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; +} + +function webViewerRotateCw() { + PDFViewerApplication.rotatePages(90); +} + +function webViewerRotateCcw() { + PDFViewerApplication.rotatePages(-90); +} + +function webViewerOptionalContentConfig(evt) { + PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise; +} + +function webViewerSwitchScrollMode(evt) { + PDFViewerApplication.pdfViewer.scrollMode = evt.mode; +} + +function webViewerSwitchSpreadMode(evt) { + PDFViewerApplication.pdfViewer.spreadMode = evt.mode; +} + +function webViewerDocumentProperties() { + PDFViewerApplication.pdfDocumentProperties.open(); +} + +function webViewerFind(evt) { + PDFViewerApplication.findController.executeCommand("find" + evt.type, { + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: evt.caseSensitive, + entireWord: evt.entireWord, + highlightAll: evt.highlightAll, + findPrevious: evt.findPrevious + }); +} + +function webViewerFindFromUrlHash(evt) { + PDFViewerApplication.findController.executeCommand("find", { + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: false, + entireWord: false, + highlightAll: true, + findPrevious: false + }); +} + +function webViewerUpdateFindMatchesCount({ + matchesCount +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount); + } else { + PDFViewerApplication.findBar.updateResultsCount(matchesCount); + } +} + +function webViewerUpdateFindControlState({ + state, + previous, + matchesCount, + rawQuery +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindControlState({ + result: state, + findPrevious: previous, + matchesCount, + rawQuery + }); + } else { + PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount); + } +} + +function webViewerScaleChanging(evt) { + PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale); + PDFViewerApplication.pdfViewer.update(); +} + +function webViewerRotationChanging(evt) { + PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation; + PDFViewerApplication.forceRendering(); + PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; +} + +function webViewerPageChanging({ + pageNumber, + pageLabel +}) { + PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel); + PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber); + + if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { + PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber); + } +} + +function webViewerVisibilityChange(evt) { + if (document.visibilityState === "visible") { + setZoomDisabledTimeout(); + } +} + +let zoomDisabledTimeout = null; + +function setZoomDisabledTimeout() { + if (zoomDisabledTimeout) { + clearTimeout(zoomDisabledTimeout); + } + + zoomDisabledTimeout = setTimeout(function () { + zoomDisabledTimeout = null; + }, WHEEL_ZOOM_DISABLED_TIMEOUT); +} + +function webViewerWheel(evt) { + const { + pdfViewer, + supportedMouseWheelZoomModifierKeys + } = PDFViewerApplication; + + if (pdfViewer.isInPresentationMode) { + return; + } + + if (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { + evt.preventDefault(); + + if (zoomDisabledTimeout || document.visibilityState === "hidden") { + return; + } + + const previousScale = pdfViewer.currentScale; + const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); + let ticks = 0; + + if (evt.deltaMode === WheelEvent.DOM_DELTA_LINE || evt.deltaMode === WheelEvent.DOM_DELTA_PAGE) { + if (Math.abs(delta) >= 1) { + ticks = Math.sign(delta); + } else { + ticks = PDFViewerApplication.accumulateWheelTicks(delta); + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + ticks = PDFViewerApplication.accumulateWheelTicks(delta / PIXELS_PER_LINE_SCALE); + } + + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } + + const currentScale = pdfViewer.currentScale; + + if (previousScale !== currentScale) { + const scaleCorrectionFactor = currentScale / previousScale - 1; + const rect = pdfViewer.container.getBoundingClientRect(); + const dx = evt.clientX - rect.left; + const dy = evt.clientY - rect.top; + pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; + pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; + } + } else { + setZoomDisabledTimeout(); + } +} + +function webViewerTouchStart(evt) { + if (evt.touches.length > 1) { + evt.preventDefault(); + } +} + +function webViewerClick(evt) { + if (!PDFViewerApplication.secondaryToolbar.isOpen) { + return; + } + + const appConfig = PDFViewerApplication.appConfig; + + if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) { + PDFViewerApplication.secondaryToolbar.close(); + } +} + +function webViewerKeyDown(evt) { + if (PDFViewerApplication.overlayManager.active) { + return; + } + + let handled = false, + ensureViewerFocused = false; + const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); + const pdfViewer = PDFViewerApplication.pdfViewer; + const isViewerInPresentationMode = pdfViewer?.isInPresentationMode; + + if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { + switch (evt.keyCode) { + case 70: + if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { + PDFViewerApplication.findBar.open(); + handled = true; + } + + break; + + case 71: + if (!PDFViewerApplication.supportsIntegratedFind) { + const findState = PDFViewerApplication.findController.state; + + if (findState) { + PDFViewerApplication.findController.executeCommand("findagain", { + query: findState.query, + phraseSearch: findState.phraseSearch, + caseSensitive: findState.caseSensitive, + entireWord: findState.entireWord, + highlightAll: findState.highlightAll, + findPrevious: cmd === 5 || cmd === 12 + }); + } + + handled = true; + } + + break; + + case 61: + case 107: + case 187: + case 171: + if (!isViewerInPresentationMode) { + PDFViewerApplication.zoomIn(); + } + + handled = true; + break; + + case 173: + case 109: + case 189: + if (!isViewerInPresentationMode) { + PDFViewerApplication.zoomOut(); + } + + handled = true; + break; + + case 48: + case 96: + if (!isViewerInPresentationMode) { + setTimeout(function () { + PDFViewerApplication.zoomReset(); + }); + handled = false; + } + + break; + + case 38: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + + break; + + case 40: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + + break; + } + } + + const { + eventBus + } = PDFViewerApplication; + + if (cmd === 1 || cmd === 8) { + switch (evt.keyCode) { + case 83: + // eventBus.dispatch("download", { + // source: window + // }); + handled = true; + break; + + case 79: + { + eventBus.dispatch("openfile", { + source: window + }); + handled = true; + } + break; + } + } + + if (cmd === 3 || cmd === 10) { + switch (evt.keyCode) { + case 80: + // PDFViewerApplication.requestPresentationMode(); + handled = true; + break; + + case 71: + PDFViewerApplication.appConfig.toolbar.pageNumber.select(); + handled = true; + break; + } + } + + if (handled) { + if (ensureViewerFocused && !isViewerInPresentationMode) { + pdfViewer.focus(); + } + + evt.preventDefault(); + return; + } + + const curElement = (0, _ui_utils.getActiveOrFocusedElement)(); + const curElementTagName = curElement?.tagName.toUpperCase(); + + if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement?.isContentEditable) { + if (evt.keyCode !== 27) { + return; + } + } + + if (cmd === 0) { + let turnPage = 0, + turnOnlyIfPageFit = false; + + switch (evt.keyCode) { + case 38: + case 33: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + turnPage = -1; + break; + + case 8: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + + turnPage = -1; + break; + + case 37: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + case 75: + case 80: + turnPage = -1; + break; + + case 27: + if (PDFViewerApplication.secondaryToolbar.isOpen) { + PDFViewerApplication.secondaryToolbar.close(); + handled = true; + } + + if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) { + PDFViewerApplication.findBar.close(); + handled = true; + } + + break; + + case 40: + case 34: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + turnPage = 1; + break; + + case 13: + case 32: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + + turnPage = 1; + break; + + case 39: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + case 74: + case 78: + turnPage = 1; + break; + + case 36: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + + break; + + case 35: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + + break; + + case 83: + PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT); + break; + + case 72: + PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND); + break; + + case 82: + PDFViewerApplication.rotatePages(90); + break; + + case 115: + PDFViewerApplication.pdfSidebar.toggle(); + break; + } + + if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { + if (turnPage > 0) { + pdfViewer.nextPage(); + } else { + pdfViewer.previousPage(); + } + + handled = true; + } + } + + if (cmd === 4) { + switch (evt.keyCode) { + case 13: + case 32: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") { + break; + } + + if (PDFViewerApplication.page > 1) { + PDFViewerApplication.page--; + } + + handled = true; + break; + + case 82: + PDFViewerApplication.rotatePages(-90); + break; + } + } + + if (!handled && !isViewerInPresentationMode) { + if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") { + ensureViewerFocused = true; + } + } + + if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { + pdfViewer.focus(); + } + + if (handled) { + evt.preventDefault(); + } +} + +function beforeUnload(evt) { + evt.preventDefault(); + evt.returnValue = ""; + return false; +} + +const PDFPrintServiceFactory = { + instance: { + supportsPrinting: false, + + createPrintService() { + throw new Error("Not implemented: createPrintService"); + } + + } +}; +exports.PDFPrintServiceFactory = PDFPrintServiceFactory; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.apiPageLayoutToSpreadMode = apiPageLayoutToSpreadMode; +exports.apiPageModeToSidebarView = apiPageModeToSidebarView; +exports.approximateFraction = approximateFraction; +exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; +exports.binarySearchFirstItem = binarySearchFirstItem; +exports.getActiveOrFocusedElement = getActiveOrFocusedElement; +exports.getOutputScale = getOutputScale; +exports.getPageSizeInches = getPageSizeInches; +exports.getVisibleElements = getVisibleElements; +exports.isPortraitOrientation = isPortraitOrientation; +exports.isValidRotation = isValidRotation; +exports.isValidScrollMode = isValidScrollMode; +exports.isValidSpreadMode = isValidSpreadMode; +exports.moveToEndOfArray = moveToEndOfArray; +exports.noContextMenuHandler = noContextMenuHandler; +exports.normalizeWheelEventDelta = normalizeWheelEventDelta; +exports.normalizeWheelEventDirection = normalizeWheelEventDirection; +exports.parseQueryString = parseQueryString; +exports.roundToDivide = roundToDivide; +exports.scrollIntoView = scrollIntoView; +exports.waitOnEventOrTimeout = waitOnEventOrTimeout; +exports.watchScroll = watchScroll; +exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = exports.animationStarted = void 0; +const CSS_UNITS = 96.0 / 72.0; +exports.CSS_UNITS = CSS_UNITS; +const DEFAULT_SCALE_VALUE = "auto"; +exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; +const DEFAULT_SCALE = 1.0; +exports.DEFAULT_SCALE = DEFAULT_SCALE; +const MIN_SCALE = 0.1; +exports.MIN_SCALE = MIN_SCALE; +const MAX_SCALE = 10.0; +exports.MAX_SCALE = MAX_SCALE; +const UNKNOWN_SCALE = 0; +exports.UNKNOWN_SCALE = UNKNOWN_SCALE; +const MAX_AUTO_SCALE = 1.25; +exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; +const SCROLLBAR_PADDING = 40; +exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; +const VERTICAL_PADDING = 5; +exports.VERTICAL_PADDING = VERTICAL_PADDING; +const LOADINGBAR_END_OFFSET_VAR = "--loadingBar-end-offset"; +const PresentationModeState = { + UNKNOWN: 0, + NORMAL: 1, + CHANGING: 2, + FULLSCREEN: 3 +}; +exports.PresentationModeState = PresentationModeState; +const SidebarView = { + UNKNOWN: -1, + NONE: 0, + THUMBS: 1, + OUTLINE: 2, + ATTACHMENTS: 3, + LAYERS: 4 +}; +exports.SidebarView = SidebarView; +const RendererType = { + CANVAS: "canvas", + SVG: "svg" +}; +exports.RendererType = RendererType; +const TextLayerMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_ENHANCE: 2 +}; +exports.TextLayerMode = TextLayerMode; +const ScrollMode = { + UNKNOWN: -1, + VERTICAL: 0, + HORIZONTAL: 1, + WRAPPED: 2 +}; +exports.ScrollMode = ScrollMode; +const SpreadMode = { + UNKNOWN: -1, + NONE: 0, + ODD: 1, + EVEN: 2 +}; +exports.SpreadMode = SpreadMode; +const AutoPrintRegExp = /\bprint\s*\(/; +exports.AutoPrintRegExp = AutoPrintRegExp; + +function getOutputScale(ctx) { + const devicePixelRatio = window.devicePixelRatio || 1; + const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; + const pixelRatio = devicePixelRatio / backingStoreRatio; + return { + sx: pixelRatio, + sy: pixelRatio, + scaled: pixelRatio !== 1 + }; +} + +function scrollIntoView(element, spot, scrollMatches = false) { + let parent = element.offsetParent; + + if (!parent) { + console.error("offsetParent is not set -- cannot scroll"); + return; + } + + let offsetY = element.offsetTop + element.clientTop; + let offsetX = element.offsetLeft + element.clientLeft; + + while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) { + offsetY += parent.offsetTop; + offsetX += parent.offsetLeft; + parent = parent.offsetParent; + + if (!parent) { + return; + } + } + + if (spot) { + if (spot.top !== undefined) { + offsetY += spot.top; + } + + if (spot.left !== undefined) { + offsetX += spot.left; + parent.scrollLeft = offsetX; + } + } + + parent.scrollTop = offsetY; +} + +function watchScroll(viewAreaElement, callback) { + const debounceScroll = function (evt) { + if (rAF) { + return; + } + + rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { + rAF = null; + const currentX = viewAreaElement.scrollLeft; + const lastX = state.lastX; + + if (currentX !== lastX) { + state.right = currentX > lastX; + } + + state.lastX = currentX; + const currentY = viewAreaElement.scrollTop; + const lastY = state.lastY; + + if (currentY !== lastY) { + state.down = currentY > lastY; + } + + state.lastY = currentY; + callback(state); + }); + }; + + const state = { + right: true, + down: true, + lastX: viewAreaElement.scrollLeft, + lastY: viewAreaElement.scrollTop, + _eventHandler: debounceScroll + }; + let rAF = null; + viewAreaElement.addEventListener("scroll", debounceScroll, true); + return state; +} + +function parseQueryString(query) { + const parts = query.split("&"); + const params = Object.create(null); + + for (let i = 0, ii = parts.length; i < ii; ++i) { + const param = parts[i].split("="); + const key = param[0].toLowerCase(); + const value = param.length > 1 ? param[1] : null; + params[decodeURIComponent(key)] = decodeURIComponent(value); + } + + return params; +} + +function binarySearchFirstItem(items, condition) { + let minIndex = 0; + let maxIndex = items.length - 1; + + if (maxIndex < 0 || !condition(items[maxIndex])) { + return items.length; + } + + if (condition(items[minIndex])) { + return minIndex; + } + + while (minIndex < maxIndex) { + const currentIndex = minIndex + maxIndex >> 1; + const currentItem = items[currentIndex]; + + if (condition(currentItem)) { + maxIndex = currentIndex; + } else { + minIndex = currentIndex + 1; + } + } + + return minIndex; +} + +function approximateFraction(x) { + if (Math.floor(x) === x) { + return [x, 1]; + } + + const xinv = 1 / x; + const limit = 8; + + if (xinv > limit) { + return [1, limit]; + } else if (Math.floor(xinv) === xinv) { + return [1, xinv]; + } + + const x_ = x > 1 ? xinv : x; + let a = 0, + b = 1, + c = 1, + d = 1; + + while (true) { + const p = a + c, + q = b + d; + + if (q > limit) { + break; + } + + if (x_ <= p / q) { + c = p; + d = q; + } else { + a = p; + b = q; + } + } + + let result; + + if (x_ - a / b < c / d - x_) { + result = x_ === x ? [a, b] : [b, a]; + } else { + result = x_ === x ? [c, d] : [d, c]; + } + + return result; +} + +function roundToDivide(x, div) { + const r = x % div; + return r === 0 ? x : Math.round(x - r + div); +} + +function getPageSizeInches({ + view, + userUnit, + rotate +}) { + const [x1, y1, x2, y2] = view; + const changeOrientation = rotate % 180 !== 0; + const width = (x2 - x1) / 72 * userUnit; + const height = (y2 - y1) / 72 * userUnit; + return { + width: changeOrientation ? height : width, + height: changeOrientation ? width : height + }; +} + +function backtrackBeforeAllVisibleElements(index, views, top) { + if (index < 2) { + return index; + } + + let elt = views[index].div; + let pageTop = elt.offsetTop + elt.clientTop; + + if (pageTop >= top) { + elt = views[index - 1].div; + pageTop = elt.offsetTop + elt.clientTop; + } + + for (let i = index - 2; i >= 0; --i) { + elt = views[i].div; + + if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { + break; + } + + index = i; + } + + return index; +} + +function getVisibleElements({ + scrollEl, + views, + sortByVisibility = false, + horizontal = false, + rtl = false +}) { + const top = scrollEl.scrollTop, + bottom = top + scrollEl.clientHeight; + const left = scrollEl.scrollLeft, + right = left + scrollEl.clientWidth; + + function isElementBottomAfterViewTop(view) { + const element = view.div; + const elementBottom = element.offsetTop + element.clientTop + element.clientHeight; + return elementBottom > top; + } + + function isElementNextAfterViewHorizontally(view) { + const element = view.div; + const elementLeft = element.offsetLeft + element.clientLeft; + const elementRight = elementLeft + element.clientWidth; + return rtl ? elementLeft < right : elementRight > left; + } + + const visible = [], + numViews = views.length; + let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); + + if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { + firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); + } + + let lastEdge = horizontal ? right : -1; + + for (let i = firstVisibleElementInd; i < numViews; i++) { + const view = views[i], + element = view.div; + const currentWidth = element.offsetLeft + element.clientLeft; + const currentHeight = element.offsetTop + element.clientTop; + const viewWidth = element.clientWidth, + viewHeight = element.clientHeight; + const viewRight = currentWidth + viewWidth; + const viewBottom = currentHeight + viewHeight; + + if (lastEdge === -1) { + if (viewBottom >= bottom) { + lastEdge = viewBottom; + } + } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { + break; + } + + if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { + continue; + } + + const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); + const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); + const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, + fractionWidth = (viewWidth - hiddenWidth) / viewWidth; + const percent = fractionHeight * fractionWidth * 100 | 0; + visible.push({ + id: view.id, + x: currentWidth, + y: currentHeight, + view, + percent, + widthPercent: fractionWidth * 100 | 0 + }); + } + + const first = visible[0], + last = visible[visible.length - 1]; + + if (sortByVisibility) { + visible.sort(function (a, b) { + const pc = a.percent - b.percent; + + if (Math.abs(pc) > 0.001) { + return -pc; + } + + return a.id - b.id; + }); + } + + return { + first, + last, + views: visible + }; +} + +function noContextMenuHandler(evt) { + evt.preventDefault(); +} + +function normalizeWheelEventDirection(evt) { + let delta = Math.hypot(evt.deltaX, evt.deltaY); + const angle = Math.atan2(evt.deltaY, evt.deltaX); + + if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { + delta = -delta; + } + + return delta; +} + +function normalizeWheelEventDelta(evt) { + let delta = normalizeWheelEventDirection(evt); + const MOUSE_DOM_DELTA_PIXEL_MODE = 0; + const MOUSE_DOM_DELTA_LINE_MODE = 1; + const MOUSE_PIXELS_PER_LINE = 30; + const MOUSE_LINES_PER_PAGE = 30; + + if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { + delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; + } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { + delta /= MOUSE_LINES_PER_PAGE; + } + + return delta; +} + +function isValidRotation(angle) { + return Number.isInteger(angle) && angle % 90 === 0; +} + +function isValidScrollMode(mode) { + return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; +} + +function isValidSpreadMode(mode) { + return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; +} + +function isPortraitOrientation(size) { + return size.width <= size.height; +} + +const WaitOnType = { + EVENT: "event", + TIMEOUT: "timeout" +}; +exports.WaitOnType = WaitOnType; + +function waitOnEventOrTimeout({ + target, + name, + delay = 0 +}) { + return new Promise(function (resolve, reject) { + if (typeof target !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) { + throw new Error("waitOnEventOrTimeout - invalid parameters."); + } + + function handler(type) { + if (target instanceof EventBus) { + target._off(name, eventHandler); + } else { + target.removeEventListener(name, eventHandler); + } + + if (timeout) { + clearTimeout(timeout); + } + + resolve(type); + } + + const eventHandler = handler.bind(null, WaitOnType.EVENT); + + if (target instanceof EventBus) { + target._on(name, eventHandler); + } else { + target.addEventListener(name, eventHandler); + } + + const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT); + const timeout = setTimeout(timeoutHandler, delay); + }); +} + +const animationStarted = new Promise(function (resolve) { + window.requestAnimationFrame(resolve); +}); +exports.animationStarted = animationStarted; + +function dispatchDOMEvent(eventName, args = null) { + throw new Error("Not implemented: dispatchDOMEvent"); +} + +class EventBus { + constructor(options) { + this._listeners = Object.create(null); + } + + on(eventName, listener, options = null) { + this._on(eventName, listener, { + external: true, + once: options?.once + }); + } + + off(eventName, listener, options = null) { + this._off(eventName, listener, { + external: true, + once: options?.once + }); + } + + dispatch(eventName) { + const eventListeners = this._listeners[eventName]; + + if (!eventListeners || eventListeners.length === 0) { + return; + } + + const args = Array.prototype.slice.call(arguments, 1); + let externalListeners; + + for (const { + listener, + external, + once + } of eventListeners.slice(0)) { + if (once) { + this._off(eventName, listener); + } + + if (external) { + (externalListeners || (externalListeners = [])).push(listener); + continue; + } + + listener.apply(null, args); + } + + if (externalListeners) { + for (const listener of externalListeners) { + listener.apply(null, args); + } + + externalListeners = null; + } + } + + _on(eventName, listener, options = null) { + var _this$_listeners; + + const eventListeners = (_this$_listeners = this._listeners)[eventName] || (_this$_listeners[eventName] = []); + eventListeners.push({ + listener, + external: options?.external === true, + once: options?.once === true + }); + } + + _off(eventName, listener, options = null) { + const eventListeners = this._listeners[eventName]; + + if (!eventListeners) { + return; + } + + for (let i = 0, ii = eventListeners.length; i < ii; i++) { + if (eventListeners[i].listener === listener) { + eventListeners.splice(i, 1); + return; + } + } + } + +} + +exports.EventBus = EventBus; + +function clamp(v, min, max) { + return Math.min(Math.max(v, min), max); +} + +class ProgressBar { + constructor(id, { + height, + width, + units + } = {}) { + this.visible = true; + this.div = document.querySelector(id + " .progress"); + this.bar = this.div.parentNode; + this.height = height || 100; + this.width = width || 100; + this.units = units || "%"; + this.div.style.height = this.height + this.units; + this.percent = 0; + } + + _updateBar() { + if (this._indeterminate) { + this.div.classList.add("indeterminate"); + this.div.style.width = this.width + this.units; + return; + } + + this.div.classList.remove("indeterminate"); + const progressSize = this.width * this._percent / 100; + this.div.style.width = progressSize + this.units; + } + + get percent() { + return this._percent; + } + + set percent(val) { + this._indeterminate = isNaN(val); + this._percent = clamp(val, 0, 100); + + this._updateBar(); + } + + setWidth(viewer) { + if (!viewer) { + return; + } + + const container = viewer.parentNode; + const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; + + if (scrollbarWidth > 0) { + const doc = document.documentElement; + doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`); + } + } + + hide() { + if (!this.visible) { + return; + } + + this.visible = false; + this.bar.classList.add("hidden"); + } + + show() { + if (this.visible) { + return; + } + + this.visible = true; + this.bar.classList.remove("hidden"); + } + +} + +exports.ProgressBar = ProgressBar; + +function moveToEndOfArray(arr, condition) { + const moved = [], + len = arr.length; + let write = 0; + + for (let read = 0; read < len; ++read) { + if (condition(arr[read])) { + moved.push(arr[read]); + } else { + arr[write] = arr[read]; + ++write; + } + } + + for (let read = 0; write < len; ++read, ++write) { + arr[write] = moved[read]; + } +} + +function getActiveOrFocusedElement() { + let curRoot = document; + let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + + while (curActiveOrFocused?.shadowRoot) { + curRoot = curActiveOrFocused.shadowRoot; + curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + } + + return curActiveOrFocused; +} + +function apiPageLayoutToSpreadMode(layout) { + switch (layout) { + case "SinglePage": + case "OneColumn": + return SpreadMode.NONE; + + case "TwoColumnLeft": + case "TwoPageLeft": + return SpreadMode.ODD; + + case "TwoColumnRight": + case "TwoPageRight": + return SpreadMode.EVEN; + } + + return SpreadMode.NONE; +} + +function apiPageModeToSidebarView(mode) { + switch (mode) { + case "UseNone": + return SidebarView.NONE; + + case "UseThumbs": + return SidebarView.THUMBS; + + case "UseOutlines": + return SidebarView.OUTLINE; + + case "UseAttachments": + return SidebarView.ATTACHMENTS; + + case "UseOC": + return SidebarView.LAYERS; + } + + return SidebarView.NONE; +} + +/***/ }), +/* 5 */ +/***/ ((module) => { + + + +let pdfjsLib; + +if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { + pdfjsLib = window["pdfjs-dist/build/pdf"]; +} else { + pdfjsLib = require("../build/pdf.js"); +} + +module.exports = pdfjsLib; + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFCursorTools = exports.CursorTool = void 0; + +var _grab_to_pan = __webpack_require__(7); + +var _ui_utils = __webpack_require__(4); + +const CursorTool = { + SELECT: 0, + HAND: 1, + ZOOM: 2 +}; +exports.CursorTool = CursorTool; + +class PDFCursorTools { + constructor({ + container, + eventBus, + cursorToolOnLoad = CursorTool.SELECT + }) { + this.container = container; + this.eventBus = eventBus; + this.active = CursorTool.SELECT; + this.activeBeforePresentationMode = null; + this.handTool = new _grab_to_pan.GrabToPan({ + element: this.container + }); + + this._addEventListeners(); + + Promise.resolve().then(() => { + this.switchTool(cursorToolOnLoad); + }); + } + + get activeTool() { + return this.active; + } + + switchTool(tool) { + if (this.activeBeforePresentationMode !== null) { + return; + } + + if (tool === this.active) { + return; + } + + const disableActiveTool = () => { + switch (this.active) { + case CursorTool.SELECT: + break; + + case CursorTool.HAND: + this.handTool.deactivate(); + break; + + case CursorTool.ZOOM: + } + }; + + switch (tool) { + case CursorTool.SELECT: + disableActiveTool(); + break; + + case CursorTool.HAND: + disableActiveTool(); + this.handTool.activate(); + break; + + case CursorTool.ZOOM: + default: + console.error(`switchTool: "${tool}" is an unsupported value.`); + return; + } + + this.active = tool; + + this._dispatchEvent(); + } + + _dispatchEvent() { + this.eventBus.dispatch("cursortoolchanged", { + source: this, + tool: this.active + }); + } + + _addEventListeners() { + this.eventBus._on("switchcursortool", evt => { + this.switchTool(evt.tool); + }); + + this.eventBus._on("presentationmodechanged", evt => { + switch (evt.state) { + case _ui_utils.PresentationModeState.FULLSCREEN: + { + const previouslyActive = this.active; + this.switchTool(CursorTool.SELECT); + this.activeBeforePresentationMode = previouslyActive; + break; + } + + case _ui_utils.PresentationModeState.NORMAL: + { + const previouslyActive = this.activeBeforePresentationMode; + this.activeBeforePresentationMode = null; + this.switchTool(previouslyActive); + break; + } + } + }); + } + +} + +exports.PDFCursorTools = PDFCursorTools; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GrabToPan = GrabToPan; + +function GrabToPan(options) { + this.element = options.element; + this.document = options.element.ownerDocument; + + if (typeof options.ignoreTarget === "function") { + this.ignoreTarget = options.ignoreTarget; + } + + this.onActiveChanged = options.onActiveChanged; + this.activate = this.activate.bind(this); + this.deactivate = this.deactivate.bind(this); + this.toggle = this.toggle.bind(this); + this._onmousedown = this._onmousedown.bind(this); + this._onmousemove = this._onmousemove.bind(this); + this._endPan = this._endPan.bind(this); + const overlay = this.overlay = document.createElement("div"); + overlay.className = "grab-to-pan-grabbing"; +} + +GrabToPan.prototype = { + CSS_CLASS_GRAB: "grab-to-pan-grab", + activate: function GrabToPan_activate() { + if (!this.active) { + this.active = true; + this.element.addEventListener("mousedown", this._onmousedown, true); + this.element.classList.add(this.CSS_CLASS_GRAB); + + if (this.onActiveChanged) { + this.onActiveChanged(true); + } + } + }, + deactivate: function GrabToPan_deactivate() { + if (this.active) { + this.active = false; + this.element.removeEventListener("mousedown", this._onmousedown, true); + + this._endPan(); + + this.element.classList.remove(this.CSS_CLASS_GRAB); + + if (this.onActiveChanged) { + this.onActiveChanged(false); + } + } + }, + toggle: function GrabToPan_toggle() { + if (this.active) { + this.deactivate(); + } else { + this.activate(); + } + }, + ignoreTarget: function GrabToPan_ignoreTarget(node) { + return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option"); + }, + _onmousedown: function GrabToPan__onmousedown(event) { + if (event.button !== 0 || this.ignoreTarget(event.target)) { + return; + } + + if (event.originalTarget) { + try { + event.originalTarget.tagName; + } catch (e) { + return; + } + } + + this.scrollLeftStart = this.element.scrollLeft; + this.scrollTopStart = this.element.scrollTop; + this.clientXStart = event.clientX; + this.clientYStart = event.clientY; + this.document.addEventListener("mousemove", this._onmousemove, true); + this.document.addEventListener("mouseup", this._endPan, true); + this.element.addEventListener("scroll", this._endPan, true); + event.preventDefault(); + event.stopPropagation(); + const focusedElement = document.activeElement; + + if (focusedElement && !focusedElement.contains(event.target)) { + focusedElement.blur(); + } + }, + _onmousemove: function GrabToPan__onmousemove(event) { + this.element.removeEventListener("scroll", this._endPan, true); + + if (isLeftMouseReleased(event)) { + this._endPan(); + + return; + } + + const xDiff = event.clientX - this.clientXStart; + const yDiff = event.clientY - this.clientYStart; + const scrollTop = this.scrollTopStart - yDiff; + const scrollLeft = this.scrollLeftStart - xDiff; + + if (this.element.scrollTo) { + this.element.scrollTo({ + top: scrollTop, + left: scrollLeft, + behavior: "instant" + }); + } else { + this.element.scrollTop = scrollTop; + this.element.scrollLeft = scrollLeft; + } + + if (!this.overlay.parentNode) { + document.body.appendChild(this.overlay); + } + }, + _endPan: function GrabToPan__endPan() { + this.element.removeEventListener("scroll", this._endPan, true); + this.document.removeEventListener("mousemove", this._onmousemove, true); + this.document.removeEventListener("mouseup", this._endPan, true); + this.overlay.remove(); + } +}; + +function isLeftMouseReleased(event) { + if ("buttons" in event) { + return !(event.buttons & 1); + } + + const chrome = window.chrome; + const isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app); + const isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent); + + if (isChrome15OrOpera15plus || isSafari6plus) { + return event.which === 0; + } + + return false; +} + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RenderingStates = exports.PDFRenderingQueue = void 0; + +var _pdfjsLib = __webpack_require__(5); + +const CLEANUP_TIMEOUT = 30000; +const RenderingStates = { + INITIAL: 0, + RUNNING: 1, + PAUSED: 2, + FINISHED: 3 +}; +exports.RenderingStates = RenderingStates; + +class PDFRenderingQueue { + constructor() { + this.pdfViewer = null; + this.pdfThumbnailViewer = null; + this.onIdle = null; + this.highestPriorityPage = null; + this.idleTimeout = null; + this.printing = false; + this.isThumbnailViewEnabled = false; + } + + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + + setThumbnailViewer(pdfThumbnailViewer) { + this.pdfThumbnailViewer = pdfThumbnailViewer; + } + + isHighestPriority(view) { + return this.highestPriorityPage === view.renderingId; + } + + renderHighestPriority(currentlyVisiblePages) { + if (this.idleTimeout) { + clearTimeout(this.idleTimeout); + this.idleTimeout = null; + } + + if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { + return; + } + + if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { + if (this.pdfThumbnailViewer.forceRendering()) { + return; + } + } + + if (this.printing) { + return; + } + + if (this.onIdle) { + this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); + } + } + + getHighestPriority(visible, views, scrolledDown) { + const visibleViews = visible.views; + const numVisible = visibleViews.length; + + if (numVisible === 0) { + return null; + } + + for (let i = 0; i < numVisible; ++i) { + const view = visibleViews[i].view; + + if (!this.isViewFinished(view)) { + return view; + } + } + + if (scrolledDown) { + const nextPageIndex = visible.last.id; + + if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) { + return views[nextPageIndex]; + } + } else { + const previousPageIndex = visible.first.id - 2; + + if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) { + return views[previousPageIndex]; + } + } + + return null; + } + + isViewFinished(view) { + return view.renderingState === RenderingStates.FINISHED; + } + + renderView(view) { + switch (view.renderingState) { + case RenderingStates.FINISHED: + return false; + + case RenderingStates.PAUSED: + this.highestPriorityPage = view.renderingId; + view.resume(); + break; + + case RenderingStates.RUNNING: + this.highestPriorityPage = view.renderingId; + break; + + case RenderingStates.INITIAL: + this.highestPriorityPage = view.renderingId; + view.draw().finally(() => { + this.renderHighestPriority(); + }).catch(reason => { + if (reason instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + + console.error(`renderView: "${reason}"`); + }); + break; + } + + return true; + } + +} + +exports.PDFRenderingQueue = PDFRenderingQueue; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OverlayManager = void 0; + +class OverlayManager { + constructor() { + this._overlays = {}; + this._active = null; + this._keyDownBound = this._keyDown.bind(this); + } + + get active() { + return this._active; + } + + async register(name, element, callerCloseMethod = null, canForceClose = false) { + let container; + + if (!name || !element || !(container = element.parentNode)) { + throw new Error("Not enough parameters."); + } else if (this._overlays[name]) { + throw new Error("The overlay is already registered."); + } + + this._overlays[name] = { + element, + container, + callerCloseMethod, + canForceClose + }; + } + + async unregister(name) { + if (!this._overlays[name]) { + throw new Error("The overlay does not exist."); + } else if (this._active === name) { + throw new Error("The overlay cannot be removed while it is active."); + } + + delete this._overlays[name]; + } + + async open(name) { + if (!this._overlays[name]) { + throw new Error("The overlay does not exist."); + } else if (this._active) { + if (this._overlays[name].canForceClose) { + this._closeThroughCaller(); + } else if (this._active === name) { + throw new Error("The overlay is already active."); + } else { + throw new Error("Another overlay is currently active."); + } + } + + this._active = name; + + this._overlays[this._active].element.classList.remove("hidden"); + + this._overlays[this._active].container.classList.remove("hidden"); + + window.addEventListener("keydown", this._keyDownBound); + } + + async close(name) { + if (!this._overlays[name]) { + throw new Error("The overlay does not exist."); + } else if (!this._active) { + throw new Error("The overlay is currently not active."); + } else if (this._active !== name) { + throw new Error("Another overlay is currently active."); + } + + this._overlays[this._active].container.classList.add("hidden"); + + this._overlays[this._active].element.classList.add("hidden"); + + this._active = null; + window.removeEventListener("keydown", this._keyDownBound); + } + + _keyDown(evt) { + if (this._active && evt.keyCode === 27) { + this._closeThroughCaller(); + + evt.preventDefault(); + } + } + + _closeThroughCaller() { + if (this._overlays[this._active].callerCloseMethod) { + this._overlays[this._active].callerCloseMethod(); + } + + if (this._active) { + this.close(this._active); + } + } + +} + +exports.OverlayManager = OverlayManager; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PasswordPrompt = void 0; + +var _pdfjsLib = __webpack_require__(5); + +class PasswordPrompt { + constructor(options, overlayManager, l10n, isViewerEmbedded = false) { + this.overlayName = options.overlayName; + this.container = options.container; + this.label = options.label; + this.input = options.input; + this.submitButton = options.submitButton; + this.cancelButton = options.cancelButton; + this.overlayManager = overlayManager; + this.l10n = l10n; + this._isViewerEmbedded = isViewerEmbedded; + this.updateCallback = null; + this.reason = null; + this.submitButton.addEventListener("click", this.verify.bind(this)); + this.cancelButton.addEventListener("click", this.close.bind(this)); + this.input.addEventListener("keydown", e => { + if (e.keyCode === 13) { + this.verify(); + } + }); + this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true); + } + + async open() { + await this.overlayManager.open(this.overlayName); + const passwordIncorrect = this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; + + if (!this._isViewerEmbedded || passwordIncorrect) { + this.input.focus(); + } + + this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`); + } + + close() { + this.overlayManager.close(this.overlayName).then(() => { + this.input.value = ""; + }); + } + + verify() { + const password = this.input.value; + + if (password?.length > 0) { + this.close(); + this.updateCallback(password); + } + } + + setUpdateCallback(updateCallback, reason) { + this.updateCallback = updateCallback; + this.reason = reason; + } + +} + +exports.PasswordPrompt = PasswordPrompt; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFAttachmentViewer = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _base_tree_viewer = __webpack_require__(12); + +class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.downloadManager = options.downloadManager; + + this.eventBus._on("fileattachmentannotation", this._appendAttachment.bind(this)); + } + + reset(keepRenderedCapability = false) { + super.reset(); + this._attachments = null; + + if (!keepRenderedCapability) { + this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + + if (this._pendingDispatchEvent) { + clearTimeout(this._pendingDispatchEvent); + } + + this._pendingDispatchEvent = null; + } + + _dispatchEvent(attachmentsCount) { + this._renderedCapability.resolve(); + + if (this._pendingDispatchEvent) { + clearTimeout(this._pendingDispatchEvent); + this._pendingDispatchEvent = null; + } + + if (attachmentsCount === 0) { + this._pendingDispatchEvent = setTimeout(() => { + this.eventBus.dispatch("attachmentsloaded", { + source: this, + attachmentsCount: 0 + }); + this._pendingDispatchEvent = null; + }); + return; + } + + this.eventBus.dispatch("attachmentsloaded", { + source: this, + attachmentsCount + }); + } + + _bindLink(element, { + content, + filename + }) { + element.onclick = () => { + this.downloadManager.openOrDownloadData(element, content, filename); + return false; + }; + } + + render({ + attachments, + keepRenderedCapability = false + }) { + if (this._attachments) { + this.reset(keepRenderedCapability); + } + + this._attachments = attachments || null; + + if (!attachments) { + this._dispatchEvent(0); + + return; + } + + const names = Object.keys(attachments).sort(function (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }); + const fragment = document.createDocumentFragment(); + let attachmentsCount = 0; + + for (const name of names) { + const item = attachments[name]; + const content = item.content, + filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename); + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + + this._bindLink(element, { + content, + filename + }); + + element.textContent = this._normalizeTextContent(filename); + div.appendChild(element); + fragment.appendChild(div); + attachmentsCount++; + } + + this._finishRendering(fragment, attachmentsCount); + } + + _appendAttachment({ + id, + filename, + content + }) { + const renderedPromise = this._renderedCapability.promise; + renderedPromise.then(() => { + if (renderedPromise !== this._renderedCapability.promise) { + return; + } + + let attachments = this._attachments; + + if (!attachments) { + attachments = Object.create(null); + } else { + for (const name in attachments) { + if (id === name) { + return; + } + } + } + + attachments[id] = { + filename, + content + }; + this.render({ + attachments, + keepRenderedCapability: true + }); + }); + } + +} + +exports.PDFAttachmentViewer = PDFAttachmentViewer; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseTreeViewer = void 0; + +var _pdfjsLib = __webpack_require__(5); + +const TREEITEM_OFFSET_TOP = -100; +const TREEITEM_SELECTED_CLASS = "selected"; + +class BaseTreeViewer { + constructor(options) { + if (this.constructor === BaseTreeViewer) { + throw new Error("Cannot initialize BaseTreeViewer."); + } + + this.container = options.container; + this.eventBus = options.eventBus; + this.reset(); + } + + reset() { + this._pdfDocument = null; + this._lastToggleIsShow = true; + this._currentTreeItem = null; + this.container.textContent = ""; + this.container.classList.remove("treeWithDeepNesting"); + } + + _dispatchEvent(count) { + throw new Error("Not implemented: _dispatchEvent"); + } + + _bindLink(element, params) { + throw new Error("Not implemented: _bindLink"); + } + + _normalizeTextContent(str) { + return (0, _pdfjsLib.removeNullCharacters)(str) || "\u2013"; + } + + _addToggleButton(div, hidden = false) { + const toggler = document.createElement("div"); + toggler.className = "treeItemToggler"; + + if (hidden) { + toggler.classList.add("treeItemsHidden"); + } + + toggler.onclick = evt => { + evt.stopPropagation(); + toggler.classList.toggle("treeItemsHidden"); + + if (evt.shiftKey) { + const shouldShowAll = !toggler.classList.contains("treeItemsHidden"); + + this._toggleTreeItem(div, shouldShowAll); + } + }; + + div.insertBefore(toggler, div.firstChild); + } + + _toggleTreeItem(root, show = false) { + this._lastToggleIsShow = show; + + for (const toggler of root.querySelectorAll(".treeItemToggler")) { + toggler.classList.toggle("treeItemsHidden", !show); + } + } + + _toggleAllTreeItems() { + this._toggleTreeItem(this.container, !this._lastToggleIsShow); + } + + _finishRendering(fragment, count, hasAnyNesting = false) { + if (hasAnyNesting) { + this.container.classList.add("treeWithDeepNesting"); + this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden"); + } + + this.container.appendChild(fragment); + + this._dispatchEvent(count); + } + + render(params) { + throw new Error("Not implemented: render"); + } + + _updateCurrentTreeItem(treeItem = null) { + if (this._currentTreeItem) { + this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS); + + this._currentTreeItem = null; + } + + if (treeItem) { + treeItem.classList.add(TREEITEM_SELECTED_CLASS); + this._currentTreeItem = treeItem; + } + } + + _scrollToCurrentTreeItem(treeItem) { + if (!treeItem) { + return; + } + + let currentNode = treeItem.parentNode; + + while (currentNode && currentNode !== this.container) { + if (currentNode.classList.contains("treeItem")) { + const toggler = currentNode.firstElementChild; + toggler?.classList.remove("treeItemsHidden"); + } + + currentNode = currentNode.parentNode; + } + + this._updateCurrentTreeItem(treeItem); + + this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP); + } + +} + +exports.BaseTreeViewer = BaseTreeViewer; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDocumentProperties = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(4); + +const DEFAULT_FIELD_CONTENT = "-"; +const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"]; +const US_PAGE_NAMES = { + "8.5x11": "Letter", + "8.5x14": "Legal" +}; +const METRIC_PAGE_NAMES = { + "297x420": "A3", + "210x297": "A4" +}; + +function getPageName(size, isPortrait, pageNames) { + const width = isPortrait ? size.width : size.height; + const height = isPortrait ? size.height : size.width; + return pageNames[`${width}x${height}`]; +} + +class PDFDocumentProperties { + constructor({ + overlayName, + fields, + container, + closeButton + }, overlayManager, eventBus, l10n) { + this.overlayName = overlayName; + this.fields = fields; + this.container = container; + this.overlayManager = overlayManager; + this.l10n = l10n; + + this._reset(); + + closeButton.addEventListener("click", this.close.bind(this)); + this.overlayManager.register(this.overlayName, this.container, this.close.bind(this)); + + eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + + eventBus._on("rotationchanging", evt => { + this._pagesRotation = evt.pagesRotation; + }); + + this._isNonMetricLocale = true; + l10n.getLanguage().then(locale => { + this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale); + }); + } + + async open() { + const freezeFieldData = data => { + Object.defineProperty(this, "fieldData", { + value: Object.freeze(data), + writable: false, + enumerable: true, + configurable: true + }); + }; + + await Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]); + const currentPageNumber = this._currentPageNumber; + const pagesRotation = this._pagesRotation; + + if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) { + this._updateUI(); + + return; + } + + const { + info, + contentDispositionFilename, + contentLength + } = await this.pdfDocument.getMetadata(); + const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url), this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { + return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); + }), this._parseLinearization(info.IsLinearized)]); + freezeFieldData({ + fileName, + fileSize, + title: info.Title, + author: info.Author, + subject: info.Subject, + keywords: info.Keywords, + creationDate, + modificationDate, + creator: info.Creator, + producer: info.Producer, + version: info.PDFFormatVersion, + pageCount: this.pdfDocument.numPages, + pageSize, + linearized: isLinearized, + _currentPageNumber: currentPageNumber, + _pagesRotation: pagesRotation + }); + + this._updateUI(); + + const { + length + } = await this.pdfDocument.getDownloadInfo(); + + if (contentLength === length) { + return; + } + + const data = Object.assign(Object.create(null), this.fieldData); + data.fileSize = await this._parseFileSize(length); + freezeFieldData(data); + + this._updateUI(); + } + + close() { + this.overlayManager.close(this.overlayName); + } + + setDocument(pdfDocument, url = null) { + if (this.pdfDocument) { + this._reset(); + + this._updateUI(true); + } + + if (!pdfDocument) { + return; + } + + this.pdfDocument = pdfDocument; + this.url = url; + + this._dataAvailableCapability.resolve(); + } + + _reset() { + this.pdfDocument = null; + this.url = null; + delete this.fieldData; + this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._currentPageNumber = 1; + this._pagesRotation = 0; + } + + _updateUI(reset = false) { + if (reset || !this.fieldData) { + for (const id in this.fields) { + this.fields[id].textContent = DEFAULT_FIELD_CONTENT; + } + + return; + } + + if (this.overlayManager.active !== this.overlayName) { + return; + } + + for (const id in this.fields) { + const content = this.fieldData[id]; + this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT; + } + } + + async _parseFileSize(fileSize = 0) { + const kb = fileSize / 1024, + mb = kb / 1024; + + if (!kb) { + return undefined; + } + + return this.l10n.get(`document_properties_${mb >= 1 ? "mb" : "kb"}`, { + size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(), + size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(), + size_b: fileSize.toLocaleString() + }); + } + + async _parsePageSize(pageSizeInches, pagesRotation) { + if (!pageSizeInches) { + return undefined; + } + + if (pagesRotation % 180 !== 0) { + pageSizeInches = { + width: pageSizeInches.height, + height: pageSizeInches.width + }; + } + + const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches); + let sizeInches = { + width: Math.round(pageSizeInches.width * 100) / 100, + height: Math.round(pageSizeInches.height * 100) / 100 + }; + let sizeMillimeters = { + width: Math.round(pageSizeInches.width * 25.4 * 10) / 10, + height: Math.round(pageSizeInches.height * 25.4 * 10) / 10 + }; + let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES); + + if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) { + const exactMillimeters = { + width: pageSizeInches.width * 25.4, + height: pageSizeInches.height * 25.4 + }; + const intMillimeters = { + width: Math.round(sizeMillimeters.width), + height: Math.round(sizeMillimeters.height) + }; + + if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) { + rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES); + + if (rawName) { + sizeInches = { + width: Math.round(intMillimeters.width / 25.4 * 100) / 100, + height: Math.round(intMillimeters.height / 25.4 * 100) / 100 + }; + sizeMillimeters = intMillimeters; + } + } + } + + const [{ + width, + height + }, unit, name, orientation] = await Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get(`document_properties_page_size_unit_${this._isNonMetricLocale ? "inches" : "millimeters"}`), rawName && this.l10n.get(`document_properties_page_size_name_${rawName.toLowerCase()}`), this.l10n.get(`document_properties_page_size_orientation_${isPortrait ? "portrait" : "landscape"}`)]); + return this.l10n.get(`document_properties_page_size_dimension_${name ? "name_" : ""}string`, { + width: width.toLocaleString(), + height: height.toLocaleString(), + unit, + name, + orientation + }); + } + + async _parseDate(inputDate) { + const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate); + + if (!dateObject) { + return undefined; + } + + return this.l10n.get("document_properties_date_string", { + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + } + + _parseLinearization(isLinearized) { + return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`); + } + +} + +exports.PDFDocumentProperties = PDFDocumentProperties; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindBar = void 0; + +var _pdf_find_controller = __webpack_require__(15); + +const MATCHES_COUNT_LIMIT = 1000; + +class PDFFindBar { + constructor(options, eventBus, l10n) { + this.opened = false; + this.bar = options.bar; + this.toggleButton = options.toggleButton; + this.findField = options.findField; + this.highlightAll = options.highlightAllCheckbox; + this.caseSensitive = options.caseSensitiveCheckbox; + this.entireWord = options.entireWordCheckbox; + this.findMsg = options.findMsg; + this.findResultsCount = options.findResultsCount; + this.findPreviousButton = options.findPreviousButton; + this.findNextButton = options.findNextButton; + this.eventBus = eventBus; + this.l10n = l10n; + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.findField.addEventListener("input", () => { + this.dispatchEvent(""); + }); + this.bar.addEventListener("keydown", e => { + switch (e.keyCode) { + case 13: + if (e.target === this.findField) { + this.dispatchEvent("again", e.shiftKey); + } + + break; + + case 27: + this.close(); + break; + } + }); + this.findPreviousButton.addEventListener("click", () => { + this.dispatchEvent("again", true); + }); + this.findNextButton.addEventListener("click", () => { + this.dispatchEvent("again", false); + }); + this.highlightAll.addEventListener("click", () => { + this.dispatchEvent("highlightallchange"); + }); + this.caseSensitive.addEventListener("click", () => { + this.dispatchEvent("casesensitivitychange"); + }); + this.entireWord.addEventListener("click", () => { + this.dispatchEvent("entirewordchange"); + }); + + this.eventBus._on("resize", this._adjustWidth.bind(this)); + } + + reset() { + this.updateUIState(); + } + + dispatchEvent(type, findPrev) { + this.eventBus.dispatch("find", { + source: this, + type, + query: this.findField.value, + phraseSearch: true, + caseSensitive: this.caseSensitive.checked, + entireWord: this.entireWord.checked, + highlightAll: this.highlightAll.checked, + findPrevious: findPrev + }); + } + + updateUIState(state, previous, matchesCount) { + let findMsg = Promise.resolve(""); + let status = ""; + + switch (state) { + case _pdf_find_controller.FindState.FOUND: + break; + + case _pdf_find_controller.FindState.PENDING: + status = "pending"; + break; + + case _pdf_find_controller.FindState.NOT_FOUND: + findMsg = this.l10n.get("find_not_found"); + status = "notFound"; + break; + + case _pdf_find_controller.FindState.WRAPPED: + findMsg = this.l10n.get(`find_reached_${previous ? "top" : "bottom"}`); + break; + } + + this.findField.setAttribute("data-status", status); + findMsg.then(msg => { + this.findMsg.textContent = msg; + + this._adjustWidth(); + }); + this.updateResultsCount(matchesCount); + } + + updateResultsCount({ + current = 0, + total = 0 + } = {}) { + const limit = MATCHES_COUNT_LIMIT; + let matchCountMsg = Promise.resolve(""); + + if (total > 0) { + if (total > limit) { + let key = "find_match_count_limit"; + matchCountMsg = this.l10n.get(key, { + limit + }); + } else { + let key = "find_match_count"; + matchCountMsg = this.l10n.get(key, { + current, + total + }); + } + } + + matchCountMsg.then(msg => { + this.findResultsCount.textContent = msg; + this.findResultsCount.classList.toggle("hidden", !total); + + this._adjustWidth(); + }); + } + + open() { + if (!this.opened) { + this.opened = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.bar.classList.remove("hidden"); + } + + this.findField.select(); + this.findField.focus(); + + this._adjustWidth(); + } + + close() { + if (!this.opened) { + return; + } + + this.opened = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.bar.classList.add("hidden"); + this.eventBus.dispatch("findbarclose", { + source: this + }); + } + + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } + + _adjustWidth() { + if (!this.opened) { + return; + } + + this.bar.classList.remove("wrapContainers"); + const findbarHeight = this.bar.clientHeight; + const inputContainerHeight = this.bar.firstElementChild.clientHeight; + + if (findbarHeight > inputContainerHeight) { + this.bar.classList.add("wrapContainers"); + } + } + +} + +exports.PDFFindBar = PDFFindBar; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindController = exports.FindState = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _pdf_find_utils = __webpack_require__(16); + +var _ui_utils = __webpack_require__(4); + +const FindState = { + FOUND: 0, + NOT_FOUND: 1, + WRAPPED: 2, + PENDING: 3 +}; +exports.FindState = FindState; +const FIND_TIMEOUT = 250; +const MATCH_SCROLL_OFFSET_TOP = -50; +const MATCH_SCROLL_OFFSET_LEFT = -400; +const CHARACTERS_TO_NORMALIZE = { + "\u2010": "-", + "\u2018": "'", + "\u2019": "'", + "\u201A": "'", + "\u201B": "'", + "\u201C": '"', + "\u201D": '"', + "\u201E": '"', + "\u201F": '"', + "\u00BC": "1/4", + "\u00BD": "1/2", + "\u00BE": "3/4" +}; +let normalizationRegex = null; + +function normalize(text) { + if (!normalizationRegex) { + const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(""); + normalizationRegex = new RegExp(`[${replace}]`, "g"); + } + + let diffs = null; + const normalizedText = text.replace(normalizationRegex, function (ch, index) { + const normalizedCh = CHARACTERS_TO_NORMALIZE[ch], + diff = normalizedCh.length - ch.length; + + if (diff !== 0) { + (diffs || (diffs = [])).push([index, diff]); + } + + return normalizedCh; + }); + return [normalizedText, diffs]; +} + +function getOriginalIndex(matchIndex, diffs = null) { + if (!diffs) { + return matchIndex; + } + + let totalDiff = 0; + + for (const [index, diff] of diffs) { + const currentIndex = index + totalDiff; + + if (currentIndex >= matchIndex) { + break; + } + + if (currentIndex + diff > matchIndex) { + totalDiff += matchIndex - currentIndex; + break; + } + + totalDiff += diff; + } + + return matchIndex - totalDiff; +} + +class PDFFindController { + constructor({ + linkService, + eventBus + }) { + this._linkService = linkService; + this._eventBus = eventBus; + + this._reset(); + + eventBus._on("findbarclose", this._onFindBarClose.bind(this)); + } + + get highlightMatches() { + return this._highlightMatches; + } + + get pageMatches() { + return this._pageMatches; + } + + get pageMatchesLength() { + return this._pageMatchesLength; + } + + get selected() { + return this._selected; + } + + get state() { + return this._state; + } + + setDocument(pdfDocument) { + if (this._pdfDocument) { + this._reset(); + } + + if (!pdfDocument) { + return; + } + + this._pdfDocument = pdfDocument; + + this._firstPageCapability.resolve(); + } + + executeCommand(cmd, state) { + if (!state) { + return; + } + + const pdfDocument = this._pdfDocument; + + if (this._state === null || this._shouldDirtyMatch(cmd, state)) { + this._dirtyMatch = true; + } + + this._state = state; + + if (cmd !== "findhighlightallchange") { + this._updateUIState(FindState.PENDING); + } + + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + + this._extractText(); + + const findbarClosed = !this._highlightMatches; + const pendingTimeout = !!this._findTimeout; + + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + + if (cmd === "find") { + this._findTimeout = setTimeout(() => { + this._nextMatch(); + + this._findTimeout = null; + }, FIND_TIMEOUT); + } else if (this._dirtyMatch) { + this._nextMatch(); + } else if (cmd === "findagain") { + this._nextMatch(); + + if (findbarClosed && this._state.highlightAll) { + this._updateAllPages(); + } + } else if (cmd === "findhighlightallchange") { + if (pendingTimeout) { + this._nextMatch(); + } else { + this._highlightMatches = true; + } + + this._updateAllPages(); + } else { + this._nextMatch(); + } + }); + } + + scrollMatchIntoView({ + element = null, + selectedLeft = 0, + pageIndex = -1, + matchIndex = -1 + }) { + if (!this._scrollMatches || !element) { + return; + } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) { + return; + } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) { + return; + } + + this._scrollMatches = false; + const spot = { + top: MATCH_SCROLL_OFFSET_TOP, + left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT + }; + (0, _ui_utils.scrollIntoView)(element, spot, true); + } + + _reset() { + this._highlightMatches = false; + this._scrollMatches = false; + this._pdfDocument = null; + this._pageMatches = []; + this._pageMatchesLength = []; + this._state = null; + this._selected = { + pageIdx: -1, + matchIdx: -1 + }; + this._offset = { + pageIdx: null, + matchIdx: null, + wrapped: false + }; + this._extractTextPromises = []; + this._pageContents = []; + this._pageDiffs = []; + this._matchesCountTotal = 0; + this._pagesToSearch = null; + this._pendingFindMatches = new Set(); + this._resumePageIdx = null; + this._dirtyMatch = false; + clearTimeout(this._findTimeout); + this._findTimeout = null; + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + + get _query() { + if (this._state.query !== this._rawQuery) { + this._rawQuery = this._state.query; + [this._normalizedQuery] = normalize(this._state.query); + } + + return this._normalizedQuery; + } + + _shouldDirtyMatch(cmd, state) { + if (state.query !== this._state.query) { + return true; + } + + switch (cmd) { + case "findagain": + const pageNumber = this._selected.pageIdx + 1; + const linkService = this._linkService; + + if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) { + return true; + } + + return false; + + case "findhighlightallchange": + return false; + } + + return true; + } + + _prepareMatches(matchesWithLength, matches, matchesLength) { + function isSubTerm(currentIndex) { + const currentElem = matchesWithLength[currentIndex]; + const nextElem = matchesWithLength[currentIndex + 1]; + + if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) { + currentElem.skipped = true; + return true; + } + + for (let i = currentIndex - 1; i >= 0; i--) { + const prevElem = matchesWithLength[i]; + + if (prevElem.skipped) { + continue; + } + + if (prevElem.match + prevElem.matchLength < currentElem.match) { + break; + } + + if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) { + currentElem.skipped = true; + return true; + } + } + + return false; + } + + matchesWithLength.sort(function (a, b) { + return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match; + }); + + for (let i = 0, len = matchesWithLength.length; i < len; i++) { + if (isSubTerm(i)) { + continue; + } + + matches.push(matchesWithLength[i].match); + matchesLength.push(matchesWithLength[i].matchLength); + } + } + + _isEntireWord(content, startIdx, length) { + if (startIdx > 0) { + const first = content.charCodeAt(startIdx); + const limit = content.charCodeAt(startIdx - 1); + + if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + + const endIdx = startIdx + length - 1; + + if (endIdx < content.length - 1) { + const last = content.charCodeAt(endIdx); + const limit = content.charCodeAt(endIdx + 1); + + if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + + return true; + } + + _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { + const matches = [], + matchesLength = []; + const queryLen = query.length; + let matchIdx = -queryLen; + + while (true) { + matchIdx = pageContent.indexOf(query, matchIdx + queryLen); + + if (matchIdx === -1) { + break; + } + + if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) { + continue; + } + + const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), + matchEnd = matchIdx + queryLen - 1, + originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; + matches.push(originalMatchIdx); + matchesLength.push(originalQueryLen); + } + + this._pageMatches[pageIndex] = matches; + this._pageMatchesLength[pageIndex] = matchesLength; + } + + _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { + const matchesWithLength = []; + const queryArray = query.match(/\S+/g); + + for (let i = 0, len = queryArray.length; i < len; i++) { + const subquery = queryArray[i]; + const subqueryLen = subquery.length; + let matchIdx = -subqueryLen; + + while (true) { + matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen); + + if (matchIdx === -1) { + break; + } + + if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) { + continue; + } + + const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), + matchEnd = matchIdx + subqueryLen - 1, + originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; + matchesWithLength.push({ + match: originalMatchIdx, + matchLength: originalQueryLen, + skipped: false + }); + } + } + + this._pageMatchesLength[pageIndex] = []; + this._pageMatches[pageIndex] = []; + + this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]); + } + + _calculateMatch(pageIndex) { + let pageContent = this._pageContents[pageIndex]; + const pageDiffs = this._pageDiffs[pageIndex]; + let query = this._query; + const { + caseSensitive, + entireWord, + phraseSearch + } = this._state; + + if (query.length === 0) { + return; + } + + if (!caseSensitive) { + pageContent = pageContent.toLowerCase(); + query = query.toLowerCase(); + } + + if (phraseSearch) { + this._calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord); + } else { + this._calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord); + } + + if (this._state.highlightAll) { + this._updatePage(pageIndex); + } + + if (this._resumePageIdx === pageIndex) { + this._resumePageIdx = null; + + this._nextPageMatch(); + } + + const pageMatchesCount = this._pageMatches[pageIndex].length; + + if (pageMatchesCount > 0) { + this._matchesCountTotal += pageMatchesCount; + + this._updateUIResultsCount(); + } + } + + _extractText() { + if (this._extractTextPromises.length > 0) { + return; + } + + let promise = Promise.resolve(); + + for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) { + const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._extractTextPromises[i] = extractTextCapability.promise; + promise = promise.then(() => { + return this._pdfDocument.getPage(i + 1).then(pdfPage => { + return pdfPage.getTextContent({ + normalizeWhitespace: true + }); + }).then(textContent => { + const textItems = textContent.items; + const strBuf = []; + + for (let j = 0, jj = textItems.length; j < jj; j++) { + strBuf.push(textItems[j].str); + } + + [this._pageContents[i], this._pageDiffs[i]] = normalize(strBuf.join("")); + extractTextCapability.resolve(i); + }, reason => { + console.error(`Unable to get text content for page ${i + 1}`, reason); + this._pageContents[i] = ""; + this._pageDiffs[i] = null; + extractTextCapability.resolve(i); + }); + }); + } + } + + _updatePage(index) { + if (this._scrollMatches && this._selected.pageIdx === index) { + this._linkService.page = index + 1; + } + + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: index + }); + } + + _updateAllPages() { + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: -1 + }); + } + + _nextMatch() { + const previous = this._state.findPrevious; + const currentPageIndex = this._linkService.page - 1; + const numPages = this._linkService.pagesCount; + this._highlightMatches = true; + + if (this._dirtyMatch) { + this._dirtyMatch = false; + this._selected.pageIdx = this._selected.matchIdx = -1; + this._offset.pageIdx = currentPageIndex; + this._offset.matchIdx = null; + this._offset.wrapped = false; + this._resumePageIdx = null; + this._pageMatches.length = 0; + this._pageMatchesLength.length = 0; + this._matchesCountTotal = 0; + + this._updateAllPages(); + + for (let i = 0; i < numPages; i++) { + if (this._pendingFindMatches.has(i)) { + continue; + } + + this._pendingFindMatches.add(i); + + this._extractTextPromises[i].then(pageIdx => { + this._pendingFindMatches.delete(pageIdx); + + this._calculateMatch(pageIdx); + }); + } + } + + if (this._query === "") { + this._updateUIState(FindState.FOUND); + + return; + } + + if (this._resumePageIdx) { + return; + } + + const offset = this._offset; + this._pagesToSearch = numPages; + + if (offset.matchIdx !== null) { + const numPageMatches = this._pageMatches[offset.pageIdx].length; + + if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { + offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; + + this._updateMatch(true); + + return; + } + + this._advanceOffsetPage(previous); + } + + this._nextPageMatch(); + } + + _matchesReady(matches) { + const offset = this._offset; + const numMatches = matches.length; + const previous = this._state.findPrevious; + + if (numMatches) { + offset.matchIdx = previous ? numMatches - 1 : 0; + + this._updateMatch(true); + + return true; + } + + this._advanceOffsetPage(previous); + + if (offset.wrapped) { + offset.matchIdx = null; + + if (this._pagesToSearch < 0) { + this._updateMatch(false); + + return true; + } + } + + return false; + } + + _nextPageMatch() { + if (this._resumePageIdx !== null) { + console.error("There can only be one pending page."); + } + + let matches = null; + + do { + const pageIdx = this._offset.pageIdx; + matches = this._pageMatches[pageIdx]; + + if (!matches) { + this._resumePageIdx = pageIdx; + break; + } + } while (!this._matchesReady(matches)); + } + + _advanceOffsetPage(previous) { + const offset = this._offset; + const numPages = this._linkService.pagesCount; + offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; + offset.matchIdx = null; + this._pagesToSearch--; + + if (offset.pageIdx >= numPages || offset.pageIdx < 0) { + offset.pageIdx = previous ? numPages - 1 : 0; + offset.wrapped = true; + } + } + + _updateMatch(found = false) { + let state = FindState.NOT_FOUND; + const wrapped = this._offset.wrapped; + this._offset.wrapped = false; + + if (found) { + const previousPage = this._selected.pageIdx; + this._selected.pageIdx = this._offset.pageIdx; + this._selected.matchIdx = this._offset.matchIdx; + state = wrapped ? FindState.WRAPPED : FindState.FOUND; + + if (previousPage !== -1 && previousPage !== this._selected.pageIdx) { + this._updatePage(previousPage); + } + } + + this._updateUIState(state, this._state.findPrevious); + + if (this._selected.pageIdx !== -1) { + this._scrollMatches = true; + + this._updatePage(this._selected.pageIdx); + } + } + + _onFindBarClose(evt) { + const pdfDocument = this._pdfDocument; + + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + + if (this._resumePageIdx) { + this._resumePageIdx = null; + this._dirtyMatch = true; + } + + this._updateUIState(FindState.FOUND); + + this._highlightMatches = false; + + this._updateAllPages(); + }); + } + + _requestMatchesCount() { + const { + pageIdx, + matchIdx + } = this._selected; + let current = 0, + total = this._matchesCountTotal; + + if (matchIdx !== -1) { + for (let i = 0; i < pageIdx; i++) { + current += this._pageMatches[i]?.length || 0; + } + + current += matchIdx + 1; + } + + if (current < 1 || current > total) { + current = total = 0; + } + + return { + current, + total + }; + } + + _updateUIResultsCount() { + this._eventBus.dispatch("updatefindmatchescount", { + source: this, + matchesCount: this._requestMatchesCount() + }); + } + + _updateUIState(state, previous) { + this._eventBus.dispatch("updatefindcontrolstate", { + source: this, + state, + previous, + matchesCount: this._requestMatchesCount(), + rawQuery: this._state?.query ?? null + }); + } + +} + +exports.PDFFindController = PDFFindController; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getCharacterType = getCharacterType; +exports.CharacterType = void 0; +const CharacterType = { + SPACE: 0, + ALPHA_LETTER: 1, + PUNCT: 2, + HAN_LETTER: 3, + KATAKANA_LETTER: 4, + HIRAGANA_LETTER: 5, + HALFWIDTH_KATAKANA_LETTER: 6, + THAI_LETTER: 7 +}; +exports.CharacterType = CharacterType; + +function isAlphabeticalScript(charCode) { + return charCode < 0x2e80; +} + +function isAscii(charCode) { + return (charCode & 0xff80) === 0; +} + +function isAsciiAlpha(charCode) { + return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a; +} + +function isAsciiDigit(charCode) { + return charCode >= 0x30 && charCode <= 0x39; +} + +function isAsciiSpace(charCode) { + return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a; +} + +function isHan(charCode) { + return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff; +} + +function isKatakana(charCode) { + return charCode >= 0x30a0 && charCode <= 0x30ff; +} + +function isHiragana(charCode) { + return charCode >= 0x3040 && charCode <= 0x309f; +} + +function isHalfwidthKatakana(charCode) { + return charCode >= 0xff60 && charCode <= 0xff9f; +} + +function isThai(charCode) { + return (charCode & 0xff80) === 0x0e00; +} + +function getCharacterType(charCode) { + if (isAlphabeticalScript(charCode)) { + if (isAscii(charCode)) { + if (isAsciiSpace(charCode)) { + return CharacterType.SPACE; + } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) { + return CharacterType.ALPHA_LETTER; + } + + return CharacterType.PUNCT; + } else if (isThai(charCode)) { + return CharacterType.THAI_LETTER; + } else if (charCode === 0xa0) { + return CharacterType.SPACE; + } + + return CharacterType.ALPHA_LETTER; + } + + if (isHan(charCode)) { + return CharacterType.HAN_LETTER; + } else if (isKatakana(charCode)) { + return CharacterType.KATAKANA_LETTER; + } else if (isHiragana(charCode)) { + return CharacterType.HIRAGANA_LETTER; + } else if (isHalfwidthKatakana(charCode)) { + return CharacterType.HALFWIDTH_KATAKANA_LETTER; + } + + return CharacterType.ALPHA_LETTER; +} + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isDestArraysEqual = isDestArraysEqual; +exports.isDestHashesEqual = isDestHashesEqual; +exports.PDFHistory = void 0; + +var _ui_utils = __webpack_require__(4); + +const HASH_CHANGE_TIMEOUT = 1000; +const POSITION_UPDATED_THRESHOLD = 50; +const UPDATE_VIEWAREA_TIMEOUT = 1000; + +function getCurrentHash() { + return document.location.hash; +} + +class PDFHistory { + constructor({ + linkService, + eventBus + }) { + this.linkService = linkService; + this.eventBus = eventBus; + this._initialized = false; + this._fingerprint = ""; + this.reset(); + this._boundEvents = null; + this._isViewerInPresentationMode = false; + + this.eventBus._on("presentationmodechanged", evt => { + this._isViewerInPresentationMode = evt.state !== _ui_utils.PresentationModeState.NORMAL; + }); + + this.eventBus._on("pagesinit", () => { + this._isPagesLoaded = false; + + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + }, { + once: true + }); + }); + } + + initialize({ + fingerprint, + resetHistory = false, + updateUrl = false + }) { + if (!fingerprint || typeof fingerprint !== "string") { + console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.'); + return; + } + + if (this._initialized) { + this.reset(); + } + + const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint; + this._fingerprint = fingerprint; + this._updateUrl = updateUrl === true; + this._initialized = true; + + this._bindEvents(); + + const state = window.history.state; + this._popStateInProgress = false; + this._blockHashChange = 0; + this._currentHash = getCurrentHash(); + this._numPositionUpdates = 0; + this._uid = this._maxUid = 0; + this._destination = null; + this._position = null; + + if (!this._isValidState(state, true) || resetHistory) { + const { + hash, + page, + rotation + } = this._parseCurrentHash(true); + + if (!hash || reInitialized || resetHistory) { + this._pushOrReplaceState(null, true); + + return; + } + + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + + return; + } + + const destination = state.destination; + + this._updateInternalState(destination, state.uid, true); + + if (destination.rotation !== undefined) { + this._initialRotation = destination.rotation; + } + + if (destination.dest) { + this._initialBookmark = JSON.stringify(destination.dest); + this._destination.page = null; + } else if (destination.hash) { + this._initialBookmark = destination.hash; + } else if (destination.page) { + this._initialBookmark = `page=${destination.page}`; + } + } + + reset() { + if (this._initialized) { + this._pageHide(); + + this._initialized = false; + + this._unbindEvents(); + } + + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + + this._initialBookmark = null; + this._initialRotation = null; + } + + push({ + namedDest = null, + explicitDest, + pageNumber + }) { + if (!this._initialized) { + return; + } + + if (namedDest && typeof namedDest !== "string") { + console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`); + return; + } else if (!Array.isArray(explicitDest)) { + console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`); + return; + } else if (!this._isValidPage(pageNumber)) { + if (pageNumber !== null || this._destination) { + console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + } + + const hash = namedDest || JSON.stringify(explicitDest); + + if (!hash) { + return; + } + + let forceReplace = false; + + if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) { + if (this._destination.page) { + return; + } + + forceReplace = true; + } + + if (this._popStateInProgress && !forceReplace) { + return; + } + + this._pushOrReplaceState({ + dest: explicitDest, + hash, + page: pageNumber, + rotation: this.linkService.rotation + }, forceReplace); + + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + + pushPage(pageNumber) { + if (!this._initialized) { + return; + } + + if (!this._isValidPage(pageNumber)) { + console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`); + return; + } + + if (this._destination?.page === pageNumber) { + return; + } + + if (this._popStateInProgress) { + return; + } + + this._pushOrReplaceState({ + dest: null, + hash: `page=${pageNumber}`, + page: pageNumber, + rotation: this.linkService.rotation + }); + + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + + pushCurrentPosition() { + if (!this._initialized || this._popStateInProgress) { + return; + } + + this._tryPushCurrentPosition(); + } + + back() { + if (!this._initialized || this._popStateInProgress) { + return; + } + + const state = window.history.state; + + if (this._isValidState(state) && state.uid > 0) { + window.history.back(); + } + } + + forward() { + if (!this._initialized || this._popStateInProgress) { + return; + } + + const state = window.history.state; + + if (this._isValidState(state) && state.uid < this._maxUid) { + window.history.forward(); + } + } + + get popStateInProgress() { + return this._initialized && (this._popStateInProgress || this._blockHashChange > 0); + } + + get initialBookmark() { + return this._initialized ? this._initialBookmark : null; + } + + get initialRotation() { + return this._initialized ? this._initialRotation : null; + } + + _pushOrReplaceState(destination, forceReplace = false) { + const shouldReplace = forceReplace || !this._destination; + const newState = { + fingerprint: this._fingerprint, + uid: shouldReplace ? this._uid : this._uid + 1, + destination + }; + + this._updateInternalState(destination, newState.uid); + + let newUrl; + + if (this._updateUrl && destination?.hash) { + const baseUrl = document.location.href.split("#")[0]; + + if (!baseUrl.startsWith("file://")) { + newUrl = `${baseUrl}#${destination.hash}`; + } + } + + if (shouldReplace) { + window.history.replaceState(newState, "", newUrl); + } else { + window.history.pushState(newState, "", newUrl); + } + } + + _tryPushCurrentPosition(temporary = false) { + if (!this._position) { + return; + } + + let position = this._position; + + if (temporary) { + position = Object.assign(Object.create(null), this._position); + position.temporary = true; + } + + if (!this._destination) { + this._pushOrReplaceState(position); + + return; + } + + if (this._destination.temporary) { + this._pushOrReplaceState(position, true); + + return; + } + + if (this._destination.hash === position.hash) { + return; + } + + if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) { + return; + } + + let forceReplace = false; + + if (this._destination.page >= position.first && this._destination.page <= position.page) { + if (this._destination.dest !== undefined || !this._destination.first) { + return; + } + + forceReplace = true; + } + + this._pushOrReplaceState(position, forceReplace); + } + + _isValidPage(val) { + return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount; + } + + _isValidState(state, checkReload = false) { + if (!state) { + return false; + } + + if (state.fingerprint !== this._fingerprint) { + if (checkReload) { + if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) { + return false; + } + + const [perfEntry] = performance.getEntriesByType("navigation"); + + if (perfEntry?.type !== "reload") { + return false; + } + } else { + return false; + } + } + + if (!Number.isInteger(state.uid) || state.uid < 0) { + return false; + } + + if (state.destination === null || typeof state.destination !== "object") { + return false; + } + + return true; + } + + _updateInternalState(destination, uid, removeTemporary = false) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + + if (removeTemporary && destination?.temporary) { + delete destination.temporary; + } + + this._destination = destination; + this._uid = uid; + this._maxUid = Math.max(this._maxUid, uid); + this._numPositionUpdates = 0; + } + + _parseCurrentHash(checkNameddest = false) { + const hash = unescape(getCurrentHash()).substring(1); + const params = (0, _ui_utils.parseQueryString)(hash); + const nameddest = params.nameddest || ""; + let page = params.page | 0; + + if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) { + page = null; + } + + return { + hash, + page, + rotation: this.linkService.rotation + }; + } + + _updateViewarea({ + location + }) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + + this._position = { + hash: this._isViewerInPresentationMode ? `page=${location.pageNumber}` : location.pdfOpenParams.substring(1), + page: this.linkService.page, + first: location.pageNumber, + rotation: location.rotation + }; + + if (this._popStateInProgress) { + return; + } + + if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) { + this._numPositionUpdates++; + } + + if (UPDATE_VIEWAREA_TIMEOUT > 0) { + this._updateViewareaTimeout = setTimeout(() => { + if (!this._popStateInProgress) { + this._tryPushCurrentPosition(true); + } + + this._updateViewareaTimeout = null; + }, UPDATE_VIEWAREA_TIMEOUT); + } + } + + _popState({ + state + }) { + const newHash = getCurrentHash(), + hashChanged = this._currentHash !== newHash; + this._currentHash = newHash; + + if (!state) { + this._uid++; + + const { + hash, + page, + rotation + } = this._parseCurrentHash(); + + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + + return; + } + + if (!this._isValidState(state)) { + return; + } + + this._popStateInProgress = true; + + if (hashChanged) { + this._blockHashChange++; + (0, _ui_utils.waitOnEventOrTimeout)({ + target: window, + name: "hashchange", + delay: HASH_CHANGE_TIMEOUT + }).then(() => { + this._blockHashChange--; + }); + } + + const destination = state.destination; + + this._updateInternalState(destination, state.uid, true); + + if ((0, _ui_utils.isValidRotation)(destination.rotation)) { + this.linkService.rotation = destination.rotation; + } + + if (destination.dest) { + this.linkService.goToDestination(destination.dest); + } else if (destination.hash) { + this.linkService.setHash(destination.hash); + } else if (destination.page) { + this.linkService.page = destination.page; + } + + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + + _pageHide() { + if (!this._destination || this._destination.temporary) { + this._tryPushCurrentPosition(); + } + } + + _bindEvents() { + if (this._boundEvents) { + return; + } + + this._boundEvents = { + updateViewarea: this._updateViewarea.bind(this), + popState: this._popState.bind(this), + pageHide: this._pageHide.bind(this) + }; + + this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea); + + window.addEventListener("popstate", this._boundEvents.popState); + window.addEventListener("pagehide", this._boundEvents.pageHide); + } + + _unbindEvents() { + if (!this._boundEvents) { + return; + } + + this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea); + + window.removeEventListener("popstate", this._boundEvents.popState); + window.removeEventListener("pagehide", this._boundEvents.pageHide); + this._boundEvents = null; + } + +} + +exports.PDFHistory = PDFHistory; + +function isDestHashesEqual(destHash, pushHash) { + if (typeof destHash !== "string" || typeof pushHash !== "string") { + return false; + } + + if (destHash === pushHash) { + return true; + } + + const { + nameddest + } = (0, _ui_utils.parseQueryString)(destHash); + + if (nameddest === pushHash) { + return true; + } + + return false; +} + +function isDestArraysEqual(firstDest, secondDest) { + function isEntryEqual(first, second) { + if (typeof first !== typeof second) { + return false; + } + + if (Array.isArray(first) || Array.isArray(second)) { + return false; + } + + if (first !== null && typeof first === "object" && second !== null) { + if (Object.keys(first).length !== Object.keys(second).length) { + return false; + } + + for (const key in first) { + if (!isEntryEqual(first[key], second[key])) { + return false; + } + } + + return true; + } + + return first === second || Number.isNaN(first) && Number.isNaN(second); + } + + if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) { + return false; + } + + if (firstDest.length !== secondDest.length) { + return false; + } + + for (let i = 0, ii = firstDest.length; i < ii; i++) { + if (!isEntryEqual(firstDest[i], secondDest[i])) { + return false; + } + } + + return true; +} + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFLayerViewer = void 0; + +var _base_tree_viewer = __webpack_require__(12); + +class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.l10n = options.l10n; + + this.eventBus._on("resetlayers", this._resetLayers.bind(this)); + + this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this)); + } + + reset() { + super.reset(); + this._optionalContentConfig = null; + } + + _dispatchEvent(layersCount) { + this.eventBus.dispatch("layersloaded", { + source: this, + layersCount + }); + } + + _bindLink(element, { + groupId, + input + }) { + const setVisibility = () => { + this._optionalContentConfig.setVisibility(groupId, input.checked); + + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(this._optionalContentConfig) + }); + }; + + element.onclick = evt => { + if (evt.target === input) { + setVisibility(); + return true; + } else if (evt.target !== element) { + return true; + } + + input.checked = !input.checked; + setVisibility(); + return false; + }; + } + + async _setNestedName(element, { + name = null + }) { + if (typeof name === "string") { + element.textContent = this._normalizeTextContent(name); + return; + } + + element.textContent = await this.l10n.get("additional_layers"); + element.style.fontStyle = "italic"; + } + + _addToggleButton(div, { + name = null + }) { + super._addToggleButton(div, name === null); + } + + _toggleAllTreeItems() { + if (!this._optionalContentConfig) { + return; + } + + super._toggleAllTreeItems(); + } + + render({ + optionalContentConfig, + pdfDocument + }) { + if (this._optionalContentConfig) { + this.reset(); + } + + this._optionalContentConfig = optionalContentConfig || null; + this._pdfDocument = pdfDocument || null; + const groups = optionalContentConfig?.getOrder(); + + if (!groups) { + this._dispatchEvent(0); + + return; + } + + const fragment = document.createDocumentFragment(), + queue = [{ + parent: fragment, + groups + }]; + let layersCount = 0, + hasAnyNesting = false; + + while (queue.length > 0) { + const levelData = queue.shift(); + + for (const groupId of levelData.groups) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + div.appendChild(element); + + if (typeof groupId === "object") { + hasAnyNesting = true; + + this._addToggleButton(div, groupId); + + this._setNestedName(element, groupId); + + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.appendChild(itemsDiv); + queue.push({ + parent: itemsDiv, + groups: groupId.order + }); + } else { + const group = optionalContentConfig.getGroup(groupId); + const input = document.createElement("input"); + + this._bindLink(element, { + groupId, + input + }); + + input.type = "checkbox"; + input.id = groupId; + input.checked = group.visible; + const label = document.createElement("label"); + label.setAttribute("for", groupId); + label.textContent = this._normalizeTextContent(group.name); + element.appendChild(input); + element.appendChild(label); + layersCount++; + } + + levelData.parent.appendChild(div); + } + } + + this._finishRendering(fragment, layersCount, hasAnyNesting); + } + + async _resetLayers() { + if (!this._optionalContentConfig) { + return; + } + + const optionalContentConfig = await this._pdfDocument.getOptionalContentConfig(); + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(optionalContentConfig) + }); + this.render({ + optionalContentConfig, + pdfDocument: this._pdfDocument + }); + } + +} + +exports.PDFLayerViewer = PDFLayerViewer; + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SimpleLinkService = exports.PDFLinkService = void 0; + +var _ui_utils = __webpack_require__(4); + +class PDFLinkService { + constructor({ + eventBus, + externalLinkTarget = null, + externalLinkRel = null, + ignoreDestinationZoom = false + } = {}) { + this.eventBus = eventBus; + this.externalLinkTarget = externalLinkTarget; + this.externalLinkRel = externalLinkRel; + this.externalLinkEnabled = true; + this._ignoreDestinationZoom = ignoreDestinationZoom; + this.baseUrl = null; + this.pdfDocument = null; + this.pdfViewer = null; + this.pdfHistory = null; + this._pagesRefCache = null; + } + + setDocument(pdfDocument, baseUrl = null) { + this.baseUrl = baseUrl; + this.pdfDocument = pdfDocument; + this._pagesRefCache = Object.create(null); + } + + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + + setHistory(pdfHistory) { + this.pdfHistory = pdfHistory; + } + + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + } + + get page() { + return this.pdfViewer.currentPageNumber; + } + + set page(value) { + this.pdfViewer.currentPageNumber = value; + } + + get rotation() { + return this.pdfViewer.pagesRotation; + } + + set rotation(value) { + this.pdfViewer.pagesRotation = value; + } + + _goToDestinationHelper(rawDest, namedDest = null, explicitDest) { + const destRef = explicitDest[0]; + let pageNumber; + + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this._cachedPageNumber(destRef); + + if (pageNumber === null) { + this.pdfDocument.getPageIndex(destRef).then(pageIndex => { + this.cachePageRef(pageIndex + 1, destRef); + + this._goToDestinationHelper(rawDest, namedDest, explicitDest); + }).catch(() => { + console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); + }); + return; + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } else { + console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); + return; + } + + if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { + console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); + return; + } + + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.push({ + namedDest, + explicitDest, + pageNumber + }); + } + + this.pdfViewer.scrollPageIntoView({ + pageNumber, + destArray: explicitDest, + ignoreDestinationZoom: this._ignoreDestinationZoom + }); + } + + async goToDestination(dest) { + if (!this.pdfDocument) { + return; + } + + let namedDest, explicitDest; + + if (typeof dest === "string") { + namedDest = dest; + explicitDest = await this.pdfDocument.getDestination(dest); + } else { + namedDest = null; + explicitDest = await dest; + } + + if (!Array.isArray(explicitDest)) { + console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`); + return; + } + + this._goToDestinationHelper(dest, namedDest, explicitDest); + } + + goToPage(val) { + if (!this.pdfDocument) { + return; + } + + const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); + return; + } + + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.pushPage(pageNumber); + } + + this.pdfViewer.scrollPageIntoView({ + pageNumber + }); + } + + getDestinationHash(dest) { + if (typeof dest === "string") { + if (dest.length > 0) { + return this.getAnchorUrl("#" + escape(dest)); + } + } else if (Array.isArray(dest)) { + const str = JSON.stringify(dest); + + if (str.length > 0) { + return this.getAnchorUrl("#" + escape(str)); + } + } + + return this.getAnchorUrl(""); + } + + getAnchorUrl(anchor) { + return (this.baseUrl || "") + anchor; + } + + setHash(hash) { + if (!this.pdfDocument) { + return; + } + + let pageNumber, dest; + + if (hash.includes("=")) { + const params = (0, _ui_utils.parseQueryString)(hash); + + if ("search" in params) { + this.eventBus.dispatch("findfromurlhash", { + source: this, + query: params.search.replace(/"/g, ""), + phraseSearch: params.phrase === "true" + }); + } + + if ("page" in params) { + pageNumber = params.page | 0 || 1; + } + + if ("zoom" in params) { + const zoomArgs = params.zoom.split(","); + const zoomArg = zoomArgs[0]; + const zoomArgNumber = parseFloat(zoomArg); + + if (!zoomArg.includes("Fit")) { + dest = [null, { + name: "XYZ" + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; + } else { + if (zoomArg === "Fit" || zoomArg === "FitB") { + dest = [null, { + name: zoomArg + }]; + } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { + dest = [null, { + name: zoomArg + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; + } else if (zoomArg === "FitR") { + if (zoomArgs.length !== 5) { + console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); + } else { + dest = [null, { + name: zoomArg + }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; + } + } else { + console.error(`PDFLinkService.setHash: "${zoomArg}" is not ` + "a valid zoom value."); + } + } + } + + if (dest) { + this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber || this.page, + destArray: dest, + allowNegativeOffset: true + }); + } else if (pageNumber) { + this.page = pageNumber; + } + + if ("pagemode" in params) { + this.eventBus.dispatch("pagemode", { + source: this, + mode: params.pagemode + }); + } + + if ("nameddest" in params) { + this.goToDestination(params.nameddest); + } + } else { + dest = unescape(hash); + + try { + dest = JSON.parse(dest); + + if (!Array.isArray(dest)) { + dest = dest.toString(); + } + } catch (ex) {} + + if (typeof dest === "string" || isValidExplicitDestination(dest)) { + this.goToDestination(dest); + return; + } + + console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not ` + "a valid destination."); + } + } + + executeNamedAction(action) { + switch (action) { + case "GoBack": + if (this.pdfHistory) { + this.pdfHistory.back(); + } + + break; + + case "GoForward": + if (this.pdfHistory) { + this.pdfHistory.forward(); + } + + break; + + case "NextPage": + this.pdfViewer.nextPage(); + break; + + case "PrevPage": + this.pdfViewer.previousPage(); + break; + + case "LastPage": + this.page = this.pagesCount; + break; + + case "FirstPage": + this.page = 1; + break; + + default: + break; + } + + this.eventBus.dispatch("namedaction", { + source: this, + action + }); + } + + cachePageRef(pageNum, pageRef) { + if (!pageRef) { + return; + } + + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + this._pagesRefCache[refStr] = pageNum; + } + + _cachedPageNumber(pageRef) { + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + return this._pagesRefCache?.[refStr] || null; + } + + isPageVisible(pageNumber) { + return this.pdfViewer.isPageVisible(pageNumber); + } + + isPageCached(pageNumber) { + return this.pdfViewer.isPageCached(pageNumber); + } + +} + +exports.PDFLinkService = PDFLinkService; + +function isValidExplicitDestination(dest) { + if (!Array.isArray(dest)) { + return false; + } + + const destLength = dest.length; + + if (destLength < 2) { + return false; + } + + const page = dest[0]; + + if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { + return false; + } + + const zoom = dest[1]; + + if (!(typeof zoom === "object" && typeof zoom.name === "string")) { + return false; + } + + let allowNull = true; + + switch (zoom.name) { + case "XYZ": + if (destLength !== 5) { + return false; + } + + break; + + case "Fit": + case "FitB": + return destLength === 2; + + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (destLength !== 3) { + return false; + } + + break; + + case "FitR": + if (destLength !== 6) { + return false; + } + + allowNull = false; + break; + + default: + return false; + } + + for (let i = 2; i < destLength; i++) { + const param = dest[i]; + + if (!(typeof param === "number" || allowNull && param === null)) { + return false; + } + } + + return true; +} + +class SimpleLinkService { + constructor() { + this.externalLinkTarget = null; + this.externalLinkRel = null; + this.externalLinkEnabled = true; + this._ignoreDestinationZoom = false; + } + + get pagesCount() { + return 0; + } + + get page() { + return 0; + } + + set page(value) {} + + get rotation() { + return 0; + } + + set rotation(value) {} + + async goToDestination(dest) {} + + goToPage(val) {} + + getDestinationHash(dest) { + return "#"; + } + + getAnchorUrl(hash) { + return "#"; + } + + setHash(hash) {} + + executeNamedAction(action) {} + + cachePageRef(pageNum, pageRef) {} + + isPageVisible(pageNumber) { + return true; + } + + isPageCached(pageNumber) { + return true; + } + +} + +exports.SimpleLinkService = SimpleLinkService; + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFOutlineViewer = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _base_tree_viewer = __webpack_require__(12); + +var _ui_utils = __webpack_require__(4); + +class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.linkService = options.linkService; + + this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this)); + + this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this)); + + this.eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + }); + + this.eventBus._on("sidebarviewchanged", evt => { + this._sidebarView = evt.view; + }); + } + + reset() { + super.reset(); + this._outline = null; + this._pageNumberToDestHashCapability = null; + this._currentPageNumber = 1; + this._isPagesLoaded = false; + + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(false); + } + + this._currentOutlineItemCapability = null; + } + + _dispatchEvent(outlineCount) { + this._currentOutlineItemCapability = (0, _pdfjsLib.createPromiseCapability)(); + + if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) { + this._currentOutlineItemCapability.resolve(false); + } else if (this._isPagesLoaded) { + this._currentOutlineItemCapability.resolve(true); + } + + this.eventBus.dispatch("outlineloaded", { + source: this, + outlineCount, + currentOutlineItemPromise: this._currentOutlineItemCapability.promise + }); + } + + _bindLink(element, { + url, + newWindow, + dest + }) { + const { + linkService + } = this; + + if (url) { + (0, _pdfjsLib.addLinkAttributes)(element, { + url, + target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget, + rel: linkService.externalLinkRel, + enabled: linkService.externalLinkEnabled + }); + return; + } + + element.href = linkService.getDestinationHash(dest); + + element.onclick = evt => { + this._updateCurrentTreeItem(evt.target.parentNode); + + if (dest) { + linkService.goToDestination(dest); + } + + return false; + }; + } + + _setStyles(element, { + bold, + italic + }) { + if (bold) { + element.style.fontWeight = "bold"; + } + + if (italic) { + element.style.fontStyle = "italic"; + } + } + + _addToggleButton(div, { + count, + items + }) { + let hidden = false; + + if (count < 0) { + let totalCount = items.length; + + if (totalCount > 0) { + const queue = [...items]; + + while (queue.length > 0) { + const { + count: nestedCount, + items: nestedItems + } = queue.shift(); + + if (nestedCount > 0 && nestedItems.length > 0) { + totalCount += nestedItems.length; + queue.push(...nestedItems); + } + } + } + + if (Math.abs(count) === totalCount) { + hidden = true; + } + } + + super._addToggleButton(div, hidden); + } + + _toggleAllTreeItems() { + if (!this._outline) { + return; + } + + super._toggleAllTreeItems(); + } + + render({ + outline, + pdfDocument + }) { + if (this._outline) { + this.reset(); + } + + this._outline = outline || null; + this._pdfDocument = pdfDocument || null; + + if (!outline) { + this._dispatchEvent(0); + + return; + } + + const fragment = document.createDocumentFragment(); + const queue = [{ + parent: fragment, + items: outline + }]; + let outlineCount = 0, + hasAnyNesting = false; + + while (queue.length > 0) { + const levelData = queue.shift(); + + for (const item of levelData.items) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + + this._bindLink(element, item); + + this._setStyles(element, item); + + element.textContent = this._normalizeTextContent(item.title); + div.appendChild(element); + + if (item.items.length > 0) { + hasAnyNesting = true; + + this._addToggleButton(div, item); + + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.appendChild(itemsDiv); + queue.push({ + parent: itemsDiv, + items: item.items + }); + } + + levelData.parent.appendChild(div); + outlineCount++; + } + } + + this._finishRendering(fragment, outlineCount, hasAnyNesting); + } + + async _currentOutlineItem() { + if (!this._isPagesLoaded) { + throw new Error("_currentOutlineItem: All pages have not been loaded."); + } + + if (!this._outline || !this._pdfDocument) { + return; + } + + const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument); + + if (!pageNumberToDestHash) { + return; + } + + this._updateCurrentTreeItem(null); + + if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) { + return; + } + + for (let i = this._currentPageNumber; i > 0; i--) { + const destHash = pageNumberToDestHash.get(i); + + if (!destHash) { + continue; + } + + const linkElement = this.container.querySelector(`a[href="${destHash}"]`); + + if (!linkElement) { + continue; + } + + this._scrollToCurrentTreeItem(linkElement.parentNode); + + break; + } + } + + async _getPageNumberToDestHash(pdfDocument) { + if (this._pageNumberToDestHashCapability) { + return this._pageNumberToDestHashCapability.promise; + } + + this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)(); + const pageNumberToDestHash = new Map(), + pageNumberNesting = new Map(); + const queue = [{ + nesting: 0, + items: this._outline + }]; + + while (queue.length > 0) { + const levelData = queue.shift(), + currentNesting = levelData.nesting; + + for (const { + dest, + items + } of levelData.items) { + let explicitDest, pageNumber; + + if (typeof dest === "string") { + explicitDest = await pdfDocument.getDestination(dest); + + if (pdfDocument !== this._pdfDocument) { + return null; + } + } else { + explicitDest = dest; + } + + if (Array.isArray(explicitDest)) { + const [destRef] = explicitDest; + + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this.linkService._cachedPageNumber(destRef); + + if (!pageNumber) { + try { + pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1; + + if (pdfDocument !== this._pdfDocument) { + return null; + } + + this.linkService.cachePageRef(pageNumber, destRef); + } catch (ex) {} + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } + + if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { + const destHash = this.linkService.getDestinationHash(dest); + pageNumberToDestHash.set(pageNumber, destHash); + pageNumberNesting.set(pageNumber, currentNesting); + } + } + + if (items.length > 0) { + queue.push({ + nesting: currentNesting + 1, + items + }); + } + } + } + + this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); + + return this._pageNumberToDestHashCapability.promise; + } + +} + +exports.PDFOutlineViewer = PDFOutlineViewer; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPresentationMode = void 0; + +var _ui_utils = __webpack_require__(4); + +const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; +const DELAY_BEFORE_HIDING_CONTROLS = 3000; +const ACTIVE_SELECTOR = "pdfPresentationMode"; +const CONTROLS_SELECTOR = "pdfPresentationModeControls"; +const MOUSE_SCROLL_COOLDOWN_TIME = 50; +const PAGE_SWITCH_THRESHOLD = 0.1; +const SWIPE_MIN_DISTANCE_THRESHOLD = 50; +const SWIPE_ANGLE_THRESHOLD = Math.PI / 6; + +class PDFPresentationMode { + constructor({ + container, + pdfViewer, + eventBus + }) { + this.container = container; + this.pdfViewer = pdfViewer; + this.eventBus = eventBus; + this.active = false; + this.args = null; + this.contextMenuOpen = false; + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + this.touchSwipeState = null; + } + + request() { + if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount) { + return false; + } + + this._addFullscreenChangeListeners(); + + this._setSwitchInProgress(); + + this._notifyStateChange(); + + if (this.container.requestFullscreen) { + this.container.requestFullscreen(); + } else if (this.container.mozRequestFullScreen) { + this.container.mozRequestFullScreen(); + } else if (this.container.webkitRequestFullscreen) { + this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } else { + return false; + } + + this.args = { + page: this.pdfViewer.currentPageNumber, + previousScale: this.pdfViewer.currentScaleValue + }; + return true; + } + + _mouseWheel(evt) { + if (!this.active) { + return; + } + + evt.preventDefault(); + const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); + const currentTime = Date.now(); + const storedTime = this.mouseScrollTimeStamp; + + if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { + return; + } + + if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { + this._resetMouseScrollState(); + } + + this.mouseScrollDelta += delta; + + if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { + const totalDelta = this.mouseScrollDelta; + + this._resetMouseScrollState(); + + const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage(); + + if (success) { + this.mouseScrollTimeStamp = currentTime; + } + } + } + + get isFullscreen() { + return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen); + } + + _notifyStateChange() { + let state = _ui_utils.PresentationModeState.NORMAL; + + if (this.switchInProgress) { + state = _ui_utils.PresentationModeState.CHANGING; + } else if (this.active) { + state = _ui_utils.PresentationModeState.FULLSCREEN; + } + + this.eventBus.dispatch("presentationmodechanged", { + source: this, + state + }); + } + + _setSwitchInProgress() { + if (this.switchInProgress) { + clearTimeout(this.switchInProgress); + } + + this.switchInProgress = setTimeout(() => { + this._removeFullscreenChangeListeners(); + + delete this.switchInProgress; + + this._notifyStateChange(); + }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS); + } + + _resetSwitchInProgress() { + if (this.switchInProgress) { + clearTimeout(this.switchInProgress); + delete this.switchInProgress; + } + } + + _enter() { + this.active = true; + + this._resetSwitchInProgress(); + + this._notifyStateChange(); + + this.container.classList.add(ACTIVE_SELECTOR); + setTimeout(() => { + this.pdfViewer.currentPageNumber = this.args.page; + this.pdfViewer.currentScaleValue = "page-fit"; + }, 0); + + this._addWindowListeners(); + + this._showControls(); + + this.contextMenuOpen = false; + window.getSelection().removeAllRanges(); + } + + _exit() { + const page = this.pdfViewer.currentPageNumber; + this.container.classList.remove(ACTIVE_SELECTOR); + setTimeout(() => { + this.active = false; + + this._removeFullscreenChangeListeners(); + + this._notifyStateChange(); + + this.pdfViewer.currentScaleValue = this.args.previousScale; + this.pdfViewer.currentPageNumber = page; + this.args = null; + }, 0); + + this._removeWindowListeners(); + + this._hideControls(); + + this._resetMouseScrollState(); + + this.contextMenuOpen = false; + } + + _mouseDown(evt) { + if (this.contextMenuOpen) { + this.contextMenuOpen = false; + evt.preventDefault(); + return; + } + + if (evt.button === 0) { + const isInternalLink = evt.target.href && evt.target.classList.contains("internalLink"); + + if (!isInternalLink) { + evt.preventDefault(); + + if (evt.shiftKey) { + this.pdfViewer.previousPage(); + } else { + this.pdfViewer.nextPage(); + } + } + } + } + + _contextMenu() { + this.contextMenuOpen = true; + } + + _showControls() { + if (this.controlsTimeout) { + clearTimeout(this.controlsTimeout); + } else { + this.container.classList.add(CONTROLS_SELECTOR); + } + + this.controlsTimeout = setTimeout(() => { + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + }, DELAY_BEFORE_HIDING_CONTROLS); + } + + _hideControls() { + if (!this.controlsTimeout) { + return; + } + + clearTimeout(this.controlsTimeout); + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + } + + _resetMouseScrollState() { + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + } + + _touchSwipe(evt) { + if (!this.active) { + return; + } + + if (evt.touches.length > 1) { + this.touchSwipeState = null; + return; + } + + switch (evt.type) { + case "touchstart": + this.touchSwipeState = { + startX: evt.touches[0].pageX, + startY: evt.touches[0].pageY, + endX: evt.touches[0].pageX, + endY: evt.touches[0].pageY + }; + break; + + case "touchmove": + if (this.touchSwipeState === null) { + return; + } + + this.touchSwipeState.endX = evt.touches[0].pageX; + this.touchSwipeState.endY = evt.touches[0].pageY; + evt.preventDefault(); + break; + + case "touchend": + if (this.touchSwipeState === null) { + return; + } + + let delta = 0; + const dx = this.touchSwipeState.endX - this.touchSwipeState.startX; + const dy = this.touchSwipeState.endY - this.touchSwipeState.startY; + const absAngle = Math.abs(Math.atan2(dy, dx)); + + if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { + delta = dx; + } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { + delta = dy; + } + + if (delta > 0) { + this.pdfViewer.previousPage(); + } else if (delta < 0) { + this.pdfViewer.nextPage(); + } + + break; + } + } + + _addWindowListeners() { + this.showControlsBind = this._showControls.bind(this); + this.mouseDownBind = this._mouseDown.bind(this); + this.mouseWheelBind = this._mouseWheel.bind(this); + this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this); + this.contextMenuBind = this._contextMenu.bind(this); + this.touchSwipeBind = this._touchSwipe.bind(this); + window.addEventListener("mousemove", this.showControlsBind); + window.addEventListener("mousedown", this.mouseDownBind); + window.addEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.addEventListener("keydown", this.resetMouseScrollStateBind); + window.addEventListener("contextmenu", this.contextMenuBind); + window.addEventListener("touchstart", this.touchSwipeBind); + window.addEventListener("touchmove", this.touchSwipeBind); + window.addEventListener("touchend", this.touchSwipeBind); + } + + _removeWindowListeners() { + window.removeEventListener("mousemove", this.showControlsBind); + window.removeEventListener("mousedown", this.mouseDownBind); + window.removeEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.removeEventListener("keydown", this.resetMouseScrollStateBind); + window.removeEventListener("contextmenu", this.contextMenuBind); + window.removeEventListener("touchstart", this.touchSwipeBind); + window.removeEventListener("touchmove", this.touchSwipeBind); + window.removeEventListener("touchend", this.touchSwipeBind); + delete this.showControlsBind; + delete this.mouseDownBind; + delete this.mouseWheelBind; + delete this.resetMouseScrollStateBind; + delete this.contextMenuBind; + delete this.touchSwipeBind; + } + + _fullscreenChange() { + if (this.isFullscreen) { + this._enter(); + } else { + this._exit(); + } + } + + _addFullscreenChangeListeners() { + this.fullscreenChangeBind = this._fullscreenChange.bind(this); + window.addEventListener("fullscreenchange", this.fullscreenChangeBind); + window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind); + window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind); + } + + _removeFullscreenChangeListeners() { + window.removeEventListener("fullscreenchange", this.fullscreenChangeBind); + window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind); + window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind); + delete this.fullscreenChangeBind; + } + +} + +exports.PDFPresentationMode = PDFPresentationMode; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFScriptingManager = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(4); + +var _pdf_rendering_queue = __webpack_require__(8); + +class PDFScriptingManager { + constructor({ + eventBus, + sandboxBundleSrc = null, + scriptingFactory = null, + docPropertiesLookup = null + }) { + this._pdfDocument = null; + this._pdfViewer = null; + this._closeCapability = null; + this._destroyCapability = null; + this._scripting = null; + this._mouseState = Object.create(null); + this._ready = false; + this._eventBus = eventBus; + this._sandboxBundleSrc = sandboxBundleSrc; + this._scriptingFactory = scriptingFactory; + this._docPropertiesLookup = docPropertiesLookup; + } + + setViewer(pdfViewer) { + this._pdfViewer = pdfViewer; + } + + async setDocument(pdfDocument) { + if (this._pdfDocument) { + await this._destroyScripting(); + } + + this._pdfDocument = pdfDocument; + + if (!pdfDocument) { + return; + } + + const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); + + if (!objects && !docActions) { + await this._destroyScripting(); + return; + } + + if (pdfDocument !== this._pdfDocument) { + return; + } + + try { + this._scripting = this._createScripting(); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + + this._internalEvents.set("updatefromsandbox", event => { + if (event?.source !== window) { + return; + } + + this._updateFromSandbox(event.detail); + }); + + this._internalEvents.set("dispatcheventinsandbox", event => { + this._scripting?.dispatchEventInSandbox(event.detail); + }); + + this._internalEvents.set("pagechanging", ({ + pageNumber, + previous + }) => { + if (pageNumber === previous) { + return; + } + + this._dispatchPageClose(previous); + + this._dispatchPageOpen(pageNumber); + }); + + this._internalEvents.set("pagerendered", ({ + pageNumber + }) => { + if (!this._pageOpenPending.has(pageNumber)) { + return; + } + + if (pageNumber !== this._pdfViewer.currentPageNumber) { + return; + } + + this._dispatchPageOpen(pageNumber); + }); + + this._internalEvents.set("pagesdestroy", async event => { + await this._dispatchPageClose(this._pdfViewer.currentPageNumber); + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillClose" + }); + this._closeCapability?.resolve(); + }); + + this._domEvents.set("mousedown", event => { + this._mouseState.isDown = true; + }); + + this._domEvents.set("mouseup", event => { + this._mouseState.isDown = false; + }); + + for (const [name, listener] of this._internalEvents) { + this._eventBus._on(name, listener); + } + + for (const [name, listener] of this._domEvents) { + window.addEventListener(name, listener); + } + + try { + const docProperties = await this._getDocProperties(); + + if (pdfDocument !== this._pdfDocument) { + return; + } + + await this._scripting.createSandbox({ + objects, + calculationOrder, + appInfo: { + platform: navigator.platform, + language: navigator.language + }, + docInfo: { ...docProperties, + actions: docActions + } + }); + + this._eventBus.dispatch("sandboxcreated", { + source: this + }); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "Open" + }); + await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true); + Promise.resolve().then(() => { + if (pdfDocument === this._pdfDocument) { + this._ready = true; + } + }); + } + + async dispatchWillSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillSave" + }); + } + + async dispatchDidSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidSave" + }); + } + + async dispatchWillPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillPrint" + }); + } + + async dispatchDidPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidPrint" + }); + } + + get mouseState() { + return this._mouseState; + } + + get destroyPromise() { + return this._destroyCapability?.promise || null; + } + + get ready() { + return this._ready; + } + + get _internalEvents() { + return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); + } + + get _domEvents() { + return (0, _pdfjsLib.shadow)(this, "_domEvents", new Map()); + } + + get _pageOpenPending() { + return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); + } + + get _visitedPages() { + return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); + } + + async _updateFromSandbox(detail) { + const isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode; + const { + id, + siblings, + command, + value + } = detail; + + if (!id) { + switch (command) { + case "clear": + console.clear(); + break; + + case "error": + console.error(value); + break; + + case "layout": + this._pdfViewer.spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(value); + break; + + case "page-num": + this._pdfViewer.currentPageNumber = value + 1; + break; + + case "print": + await this._pdfViewer.pagesPromise; + + this._eventBus.dispatch("print", { + source: this + }); + + break; + + case "println": + console.log(value); + break; + + case "zoom": + if (isInPresentationMode) { + return; + } + + this._pdfViewer.currentScaleValue = value; + break; + } + + return; + } + + if (isInPresentationMode) { + if (detail.focus) { + return; + } + } + + delete detail.id; + delete detail.siblings; + const ids = siblings ? [id, ...siblings] : [id]; + + for (const elementId of ids) { + const element = document.getElementById(elementId); + + if (element) { + element.dispatchEvent(new CustomEvent("updatefromsandbox", { + detail + })); + } else { + this._pdfDocument?.annotationStorage.setValue(elementId, detail); + } + } + } + + async _dispatchPageOpen(pageNumber, initialize = false) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + + if (initialize) { + this._closeCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + + if (!this._closeCapability) { + return; + } + + const pageView = this._pdfViewer.getPageView(pageNumber - 1); + + if (pageView?.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + this._pageOpenPending.add(pageNumber); + + return; + } + + this._pageOpenPending.delete(pageNumber); + + const actionsPromise = (async () => { + const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null); + + if (pdfDocument !== this._pdfDocument) { + return; + } + + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageOpen", + pageNumber, + actions + }); + })(); + + visitedPages.set(pageNumber, actionsPromise); + } + + async _dispatchPageClose(pageNumber) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + + if (!this._closeCapability) { + return; + } + + if (this._pageOpenPending.has(pageNumber)) { + return; + } + + const actionsPromise = visitedPages.get(pageNumber); + + if (!actionsPromise) { + return; + } + + visitedPages.set(pageNumber, null); + await actionsPromise; + + if (pdfDocument !== this._pdfDocument) { + return; + } + + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageClose", + pageNumber + }); + } + + async _getDocProperties() { + if (this._docPropertiesLookup) { + return this._docPropertiesLookup(this._pdfDocument); + } + + throw new Error("_getDocProperties: Unable to lookup properties."); + } + + _createScripting() { + this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)(); + + if (this._scripting) { + throw new Error("_createScripting: Scripting already exists."); + } + + if (this._scriptingFactory) { + return this._scriptingFactory.createScripting({ + sandboxBundleSrc: this._sandboxBundleSrc + }); + } + + throw new Error("_createScripting: Cannot create scripting."); + } + + async _destroyScripting() { + if (!this._scripting) { + this._pdfDocument = null; + this._destroyCapability?.resolve(); + return; + } + + if (this._closeCapability) { + await Promise.race([this._closeCapability.promise, new Promise(resolve => { + setTimeout(resolve, 1000); + })]).catch(reason => {}); + this._closeCapability = null; + } + + this._pdfDocument = null; + + try { + await this._scripting.destroySandbox(); + } catch (ex) {} + + for (const [name, listener] of this._internalEvents) { + this._eventBus._off(name, listener); + } + + this._internalEvents.clear(); + + for (const [name, listener] of this._domEvents) { + window.removeEventListener(name, listener); + } + + this._domEvents.clear(); + + this._pageOpenPending.clear(); + + this._visitedPages.clear(); + + this._scripting = null; + delete this._mouseState.isDown; + this._ready = false; + this._destroyCapability?.resolve(); + } + +} + +exports.PDFScriptingManager = PDFScriptingManager; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebar = void 0; + +var _ui_utils = __webpack_require__(4); + +var _pdf_rendering_queue = __webpack_require__(8); + +const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; + +class PDFSidebar { + constructor({ + elements, + pdfViewer, + pdfThumbnailViewer, + eventBus, + l10n + }) { + this.isOpen = false; + this.active = _ui_utils.SidebarView.THUMBS; + this.isInitialViewSet = false; + this.onToggled = null; + this.pdfViewer = pdfViewer; + this.pdfThumbnailViewer = pdfThumbnailViewer; + this.outerContainer = elements.outerContainer; + this.viewerContainer = elements.viewerContainer; + this.toggleButton = elements.toggleButton; + this.thumbnailButton = elements.thumbnailButton; + this.outlineButton = elements.outlineButton; + this.attachmentsButton = elements.attachmentsButton; + this.layersButton = elements.layersButton; + this.thumbnailView = elements.thumbnailView; + this.outlineView = elements.outlineView; + this.attachmentsView = elements.attachmentsView; + this.layersView = elements.layersView; + this._outlineOptionsContainer = elements.outlineOptionsContainer; + this._currentOutlineItemButton = elements.currentOutlineItemButton; + this.eventBus = eventBus; + this.l10n = l10n; + + this._addEventListeners(); + } + + reset() { + this.isInitialViewSet = false; + + this._hideUINotification(true); + + this.switchView(_ui_utils.SidebarView.THUMBS); + this.outlineButton.disabled = false; + this.attachmentsButton.disabled = false; + this.layersButton.disabled = false; + this._currentOutlineItemButton.disabled = true; + } + + get visibleView() { + return this.isOpen ? this.active : _ui_utils.SidebarView.NONE; + } + + get isThumbnailViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.THUMBS; + } + + get isOutlineViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.OUTLINE; + } + + get isAttachmentsViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.ATTACHMENTS; + } + + get isLayersViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.LAYERS; + } + + setInitialView(view = _ui_utils.SidebarView.NONE) { + if (this.isInitialViewSet) { + return; + } + + this.isInitialViewSet = true; + + if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) { + this._dispatchEvent(); + + return; + } + + if (!this._switchView(view, true)) { + this._dispatchEvent(); + } + } + + switchView(view, forceOpen = false) { + this._switchView(view, forceOpen); + } + + _switchView(view, forceOpen = false) { + const isViewChanged = view !== this.active; + let shouldForceRendering = false; + + switch (view) { + case _ui_utils.SidebarView.NONE: + if (this.isOpen) { + this.close(); + return true; + } + + return false; + + case _ui_utils.SidebarView.THUMBS: + if (this.isOpen && isViewChanged) { + shouldForceRendering = true; + } + + break; + + case _ui_utils.SidebarView.OUTLINE: + if (this.outlineButton.disabled) { + return false; + } + + break; + + case _ui_utils.SidebarView.ATTACHMENTS: + if (this.attachmentsButton.disabled) { + return false; + } + + break; + + case _ui_utils.SidebarView.LAYERS: + if (this.layersButton.disabled) { + return false; + } + + break; + + default: + console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`); + return false; + } + + this.active = view; + this.thumbnailButton.classList.toggle("toggled", view === _ui_utils.SidebarView.THUMBS); + this.outlineButton.classList.toggle("toggled", view === _ui_utils.SidebarView.OUTLINE); + this.attachmentsButton.classList.toggle("toggled", view === _ui_utils.SidebarView.ATTACHMENTS); + this.layersButton.classList.toggle("toggled", view === _ui_utils.SidebarView.LAYERS); + this.thumbnailView.classList.toggle("hidden", view !== _ui_utils.SidebarView.THUMBS); + this.outlineView.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); + this.attachmentsView.classList.toggle("hidden", view !== _ui_utils.SidebarView.ATTACHMENTS); + this.layersView.classList.toggle("hidden", view !== _ui_utils.SidebarView.LAYERS); + + this._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); + + if (forceOpen && !this.isOpen) { + this.open(); + return true; + } + + if (shouldForceRendering) { + this._updateThumbnailViewer(); + + this._forceRendering(); + } + + if (isViewChanged) { + this._dispatchEvent(); + } + + return isViewChanged; + } + + open() { + if (this.isOpen) { + return; + } + + this.isOpen = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); + + if (this.active === _ui_utils.SidebarView.THUMBS) { + this._updateThumbnailViewer(); + } + + this._forceRendering(); + + this._dispatchEvent(); + + this._hideUINotification(); + } + + close() { + if (!this.isOpen) { + return; + } + + this.isOpen = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.outerContainer.classList.add("sidebarMoving"); + this.outerContainer.classList.remove("sidebarOpen"); + + this._forceRendering(); + + this._dispatchEvent(); + } + + toggle() { + if (this.isOpen) { + this.close(); + } else { + this.open(); + } + } + + _dispatchEvent() { + this.eventBus.dispatch("sidebarviewchanged", { + source: this, + view: this.visibleView + }); + } + + _forceRendering() { + if (this.onToggled) { + this.onToggled(); + } else { + this.pdfViewer.forceRendering(); + this.pdfThumbnailViewer.forceRendering(); + } + } + + _updateThumbnailViewer() { + const { + pdfViewer, + pdfThumbnailViewer + } = this; + const pagesCount = pdfViewer.pagesCount; + + for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) { + const pageView = pdfViewer.getPageView(pageIndex); + + if (pageView?.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { + const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); + thumbnailView.setImage(pageView); + } + } + + pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); + } + + _showUINotification() { + this.l10n.get("toggle_sidebar_notification2.title").then(msg => { + this.toggleButton.title = msg; + }); + + if (!this.isOpen) { + this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); + } + } + + _hideUINotification(reset = false) { + if (this.isOpen || reset) { + this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); + } + + if (reset) { + this.l10n.get("toggle_sidebar.title").then(msg => { + this.toggleButton.title = msg; + }); + } + } + + _addEventListeners() { + this.viewerContainer.addEventListener("transitionend", evt => { + if (evt.target === this.viewerContainer) { + this.outerContainer.classList.remove("sidebarMoving"); + } + }); + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.thumbnailButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.THUMBS); + }); + this.outlineButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.OUTLINE); + }); + this.outlineButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("toggleoutlinetree", { + source: this + }); + }); + this.attachmentsButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.ATTACHMENTS); + }); + this.layersButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.LAYERS); + }); + this.layersButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("resetlayers", { + source: this + }); + }); + + this._currentOutlineItemButton.addEventListener("click", () => { + this.eventBus.dispatch("currentoutlineitem", { + source: this + }); + }); + + const onTreeLoaded = (count, button, view) => { + button.disabled = !count; + + if (count) { + this._showUINotification(); + } else if (this.active === view) { + this.switchView(_ui_utils.SidebarView.THUMBS); + } + }; + + this.eventBus._on("outlineloaded", evt => { + onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE); + evt.currentOutlineItemPromise.then(enabled => { + if (!this.isInitialViewSet) { + return; + } + + this._currentOutlineItemButton.disabled = !enabled; + }); + }); + + this.eventBus._on("attachmentsloaded", evt => { + onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS); + }); + + this.eventBus._on("layersloaded", evt => { + onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS); + }); + + this.eventBus._on("presentationmodechanged", evt => { + if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.isThumbnailViewVisible) { + this._updateThumbnailViewer(); + } + }); + } + +} + +exports.PDFSidebar = PDFSidebar; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebarResizer = void 0; +const SIDEBAR_WIDTH_VAR = "--sidebar-width"; +const SIDEBAR_MIN_WIDTH = 200; +const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; + +class PDFSidebarResizer { + constructor(options, eventBus, l10n) { + this.isRTL = false; + this.sidebarOpen = false; + this.doc = document.documentElement; + this._width = null; + this._outerContainerWidth = null; + this._boundEvents = Object.create(null); + this.outerContainer = options.outerContainer; + this.resizer = options.resizer; + this.eventBus = eventBus; + l10n.getDirection().then(dir => { + this.isRTL = dir === "rtl"; + }); + + this._addEventListeners(); + } + + get outerContainerWidth() { + return this._outerContainerWidth || (this._outerContainerWidth = this.outerContainer.clientWidth); + } + + _updateWidth(width = 0) { + const maxWidth = Math.floor(this.outerContainerWidth / 2); + + if (width > maxWidth) { + width = maxWidth; + } + + if (width < SIDEBAR_MIN_WIDTH) { + width = SIDEBAR_MIN_WIDTH; + } + + if (width === this._width) { + return false; + } + + this._width = width; + this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`); + return true; + } + + _mouseMove(evt) { + let width = evt.clientX; + + if (this.isRTL) { + width = this.outerContainerWidth - width; + } + + this._updateWidth(width); + } + + _mouseUp(evt) { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + this.eventBus.dispatch("resize", { + source: this + }); + const _boundEvents = this._boundEvents; + window.removeEventListener("mousemove", _boundEvents.mouseMove); + window.removeEventListener("mouseup", _boundEvents.mouseUp); + } + + _addEventListeners() { + const _boundEvents = this._boundEvents; + _boundEvents.mouseMove = this._mouseMove.bind(this); + _boundEvents.mouseUp = this._mouseUp.bind(this); + this.resizer.addEventListener("mousedown", evt => { + if (evt.button !== 0) { + return; + } + + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + window.addEventListener("mousemove", _boundEvents.mouseMove); + window.addEventListener("mouseup", _boundEvents.mouseUp); + }); + + this.eventBus._on("sidebarviewchanged", evt => { + this.sidebarOpen = !!evt?.view; + }); + + this.eventBus._on("resize", evt => { + if (evt?.source !== window) { + return; + } + + this._outerContainerWidth = null; + + if (!this._width) { + return; + } + + if (!this.sidebarOpen) { + this._updateWidth(this._width); + + return; + } + + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + + const updated = this._updateWidth(this._width); + + Promise.resolve().then(() => { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + + if (updated) { + this.eventBus.dispatch("resize", { + source: this + }); + } + }); + }); + } + +} + +exports.PDFSidebarResizer = PDFSidebarResizer; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFThumbnailViewer = void 0; + +var _ui_utils = __webpack_require__(4); + +var _pdf_thumbnail_view = __webpack_require__(26); + +var _pdf_rendering_queue = __webpack_require__(8); + +const THUMBNAIL_SCROLL_MARGIN = -19; +const THUMBNAIL_SELECTED_CLASS = "selected"; + +class PDFThumbnailViewer { + constructor({ + container, + eventBus, + linkService, + renderingQueue, + l10n + }) { + this.container = container; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.l10n = l10n; + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); + + this._resetView(); + + eventBus._on("optionalcontentconfigchanged", () => { + this._setImageDisabled = true; + }); + } + + _scrollUpdated() { + this.renderingQueue.renderHighestPriority(); + } + + getThumbnail(index) { + return this._thumbnails[index]; + } + + _getVisibleThumbs() { + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._thumbnails + }); + } + + scrollThumbnailIntoView(pageNumber) { + if (!this.pdfDocument) { + return; + } + + const thumbnailView = this._thumbnails[pageNumber - 1]; + + if (!thumbnailView) { + console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.'); + return; + } + + if (pageNumber !== this._currentPageNumber) { + const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1]; + prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS); + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + } + + const visibleThumbs = this._getVisibleThumbs(); + + const numVisibleThumbs = visibleThumbs.views.length; + + if (numVisibleThumbs > 0) { + const first = visibleThumbs.first.id; + const last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first; + let shouldScroll = false; + + if (pageNumber <= first || pageNumber >= last) { + shouldScroll = true; + } else { + visibleThumbs.views.some(function (view) { + if (view.id !== pageNumber) { + return false; + } + + shouldScroll = view.percent < 100; + return true; + }); + } + + if (shouldScroll) { + (0, _ui_utils.scrollIntoView)(thumbnailView.div, { + top: THUMBNAIL_SCROLL_MARGIN + }); + } + } + + this._currentPageNumber = pageNumber; + } + + get pagesRotation() { + return this._pagesRotation; + } + + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid thumbnails rotation angle."); + } + + if (!this.pdfDocument) { + return; + } + + if (this._pagesRotation === rotation) { + return; + } + + this._pagesRotation = rotation; + + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + this._thumbnails[i].update(rotation); + } + } + + cleanup() { + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + if (this._thumbnails[i] && this._thumbnails[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + this._thumbnails[i].reset(); + } + } + + _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); + } + + _resetView() { + this._thumbnails = []; + this._currentPageNumber = 1; + this._pageLabels = null; + this._pagesRotation = 0; + this._optionalContentConfigPromise = null; + this._pagesRequests = new WeakMap(); + this._setImageDisabled = false; + this.container.textContent = ""; + } + + setDocument(pdfDocument) { + if (this.pdfDocument) { + this._cancelRendering(); + + this._resetView(); + } + + this.pdfDocument = pdfDocument; + + if (!pdfDocument) { + return; + } + + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + firstPagePromise.then(firstPdfPage => { + this._optionalContentConfigPromise = optionalContentConfigPromise; + const pagesCount = pdfDocument.numPages; + const viewport = firstPdfPage.getViewport({ + scale: 1 + }); + + const checkSetImageDisabled = () => { + return this._setImageDisabled; + }; + + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ + container: this.container, + id: pageNum, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + linkService: this.linkService, + renderingQueue: this.renderingQueue, + checkSetImageDisabled, + l10n: this.l10n + }); + + this._thumbnails.push(thumbnail); + } + + const firstThumbnailView = this._thumbnails[0]; + + if (firstThumbnailView) { + firstThumbnailView.setPdfPage(firstPdfPage); + } + + const thumbnailView = this._thumbnails[this._currentPageNumber - 1]; + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + }).catch(reason => { + console.error("Unable to initialize thumbnail viewer", reason); + }); + } + + _cancelRendering() { + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + if (this._thumbnails[i]) { + this._thumbnails[i].cancelRendering(); + } + } + } + + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); + } else { + this._pageLabels = labels; + } + + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + + _ensurePdfPageLoaded(thumbView) { + if (thumbView.pdfPage) { + return Promise.resolve(thumbView.pdfPage); + } + + if (this._pagesRequests.has(thumbView)) { + return this._pagesRequests.get(thumbView); + } + + const promise = this.pdfDocument.getPage(thumbView.id).then(pdfPage => { + if (!thumbView.pdfPage) { + thumbView.setPdfPage(pdfPage); + } + + this._pagesRequests.delete(thumbView); + + return pdfPage; + }).catch(reason => { + console.error("Unable to get page for thumb view", reason); + + this._pagesRequests.delete(thumbView); + }); + + this._pagesRequests.set(thumbView, promise); + + return promise; + } + + forceRendering() { + const visibleThumbs = this._getVisibleThumbs(); + + const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down); + + if (thumbView) { + this._ensurePdfPageLoaded(thumbView).then(() => { + this.renderingQueue.renderView(thumbView); + }); + + return true; + } + + return false; + } + +} + +exports.PDFThumbnailViewer = PDFThumbnailViewer; + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TempImageFactory = exports.PDFThumbnailView = void 0; + +var _ui_utils = __webpack_require__(4); + +var _pdfjsLib = __webpack_require__(5); + +var _pdf_rendering_queue = __webpack_require__(8); + +const DRAW_UPSCALE_FACTOR = 2; +const MAX_NUM_SCALING_STEPS = 3; +const THUMBNAIL_CANVAS_BORDER_WIDTH = 1; +const THUMBNAIL_WIDTH = 98; + +const TempImageFactory = function TempImageFactoryClosure() { + let tempCanvasCache = null; + return { + getCanvas(width, height) { + let tempCanvas = tempCanvasCache; + + if (!tempCanvas) { + tempCanvas = document.createElement("canvas"); + tempCanvasCache = tempCanvas; + } + + tempCanvas.width = width; + tempCanvas.height = height; + tempCanvas.mozOpaque = true; + const ctx = tempCanvas.getContext("2d", { + alpha: false + }); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, width, height); + ctx.restore(); + return [tempCanvas, tempCanvas.getContext("2d")]; + }, + + destroyCanvas() { + const tempCanvas = tempCanvasCache; + + if (tempCanvas) { + tempCanvas.width = 0; + tempCanvas.height = 0; + } + + tempCanvasCache = null; + } + + }; +}(); + +exports.TempImageFactory = TempImageFactory; + +class PDFThumbnailView { + constructor({ + container, + id, + defaultViewport, + optionalContentConfigPromise, + linkService, + renderingQueue, + checkSetImageDisabled, + l10n + }) { + this.id = id; + this.renderingId = "thumbnail" + id; + this.pageLabel = null; + this.pdfPage = null; + this.rotation = 0; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = optionalContentConfigPromise || null; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.renderTask = null; + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; + this.resume = null; + + this._checkSetImageDisabled = checkSetImageDisabled || function () { + return false; + }; + + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasWidth = THUMBNAIL_WIDTH; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.l10n = l10n; + const anchor = document.createElement("a"); + anchor.href = linkService.getAnchorUrl("#page=" + id); + + this._thumbPageTitle.then(msg => { + anchor.title = msg; + }); + + anchor.onclick = function () { + linkService.goToPage(id); + return false; + }; + + this.anchor = anchor; + const div = document.createElement("div"); + div.className = "thumbnail"; + div.setAttribute("data-page-number", this.id); + this.div = div; + const ring = document.createElement("div"); + ring.className = "thumbnailSelectionRing"; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + this.ring = ring; + div.appendChild(ring); + anchor.appendChild(div); + container.appendChild(anchor); + } + + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + + reset() { + this.cancelRendering(); + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.div.removeAttribute("data-loaded"); + const ring = this.ring; + ring.textContent = ""; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + + if (this.canvas) { + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + + if (this.image) { + this.image.removeAttribute("src"); + delete this.image; + } + } + + update(rotation) { + if (typeof rotation !== "undefined") { + this.rotation = rotation; + } + + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + + cancelRendering() { + if (this.renderTask) { + this.renderTask.cancel(); + this.renderTask = null; + } + + this.resume = null; + } + + _getPageDrawContext(upscaleFactor = 1) { + const canvas = document.createElement("canvas"); + canvas.mozOpaque = true; + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = (0, _ui_utils.getOutputScale)(ctx); + canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0; + canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0; + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + return { + ctx, + canvas, + transform + }; + } + + _convertCanvasToImage(canvas) { + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + throw new Error("_convertCanvasToImage: Rendering has not finished."); + } + + const reducedCanvas = this._reduceImage(canvas); + + const image = document.createElement("img"); + image.className = "thumbnailImage"; + + this._thumbPageCanvas.then(msg => { + image.setAttribute("aria-label", msg); + }); + + image.style.width = this.canvasWidth + "px"; + image.style.height = this.canvasHeight + "px"; + image.src = reducedCanvas.toDataURL(); + this.image = image; + this.div.setAttribute("data-loaded", true); + this.ring.appendChild(image); + reducedCanvas.width = 0; + reducedCanvas.height = 0; + } + + draw() { + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + return Promise.resolve(undefined); + } + + const { + pdfPage + } = this; + + if (!pdfPage) { + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + return Promise.reject(new Error("pdfPage is not loaded")); + } + + this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; + + const finishRenderTask = async (error = null) => { + if (renderTask === this.renderTask) { + this.renderTask = null; + } + + if (error instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + + this._convertCanvasToImage(canvas); + + if (error) { + throw error; + } + }; + + const { + ctx, + canvas, + transform + } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR); + + const drawViewport = this.viewport.clone({ + scale: DRAW_UPSCALE_FACTOR * this.scale + }); + + const renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; + + this.resume = () => { + this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; + cont(); + }; + + return; + } + + cont(); + }; + + const renderContext = { + canvasContext: ctx, + transform, + viewport: drawViewport, + optionalContentConfigPromise: this._optionalContentConfigPromise + }; + const renderTask = this.renderTask = pdfPage.render(renderContext); + renderTask.onContinue = renderContinueCallback; + const resultPromise = renderTask.promise.then(function () { + return finishRenderTask(null); + }, function (error) { + return finishRenderTask(error); + }); + resultPromise.finally(() => { + canvas.width = 0; + canvas.height = 0; + const pageCached = this.linkService.isPageCached(this.id); + + if (!pageCached) { + this.pdfPage?.cleanup(); + } + }); + return resultPromise; + } + + setImage(pageView) { + if (this._checkSetImageDisabled()) { + return; + } + + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + return; + } + + const { + canvas, + pdfPage + } = pageView; + + if (!canvas) { + return; + } + + if (!this.pdfPage) { + this.setPdfPage(pdfPage); + } + + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + + this._convertCanvasToImage(canvas); + } + + _reduceImage(img) { + const { + ctx, + canvas + } = this._getPageDrawContext(); + + if (img.width <= 2 * canvas.width) { + ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); + return canvas; + } + + let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; + let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; + const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight); + + while (reducedWidth > img.width || reducedHeight > img.height) { + reducedWidth >>= 1; + reducedHeight >>= 1; + } + + reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); + + while (reducedWidth > 2 * canvas.width) { + reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); + reducedWidth >>= 1; + reducedHeight >>= 1; + } + + ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); + return canvas; + } + + get _thumbPageTitle() { + return this.l10n.get("thumb_page_title", { + page: this.pageLabel ?? this.id + }); + } + + get _thumbPageCanvas() { + return this.l10n.get("thumb_page_canvas", { + page: this.pageLabel ?? this.id + }); + } + + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + + this._thumbPageTitle.then(msg => { + this.anchor.title = msg; + }); + + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + return; + } + + this._thumbPageCanvas.then(msg => { + this.image?.setAttribute("aria-label", msg); + }); + } + +} + +exports.PDFThumbnailView = PDFThumbnailView; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewer = void 0; + +var _ui_utils = __webpack_require__(4); + +var _base_viewer = __webpack_require__(28); + +var _pdfjsLib = __webpack_require__(5); + +class PDFViewer extends _base_viewer.BaseViewer { + get _viewerElement() { + return (0, _pdfjsLib.shadow)(this, "_viewerElement", this.viewer); + } + + _scrollIntoView({ + pageDiv, + pageSpot = null, + pageNumber = null + }) { + if (!pageSpot && !this.isInPresentationMode) { + const left = pageDiv.offsetLeft + pageDiv.clientLeft; + const right = left + pageDiv.clientWidth; + const { + scrollLeft, + clientWidth + } = this.container; + + if (this._isScrollModeHorizontal || left < scrollLeft || right > scrollLeft + clientWidth) { + pageSpot = { + left: 0, + top: 0 + }; + } + } + + super._scrollIntoView({ + pageDiv, + pageSpot, + pageNumber + }); + } + + _getVisiblePages() { + if (this.isInPresentationMode) { + return this._getCurrentVisiblePage(); + } + + return super._getVisiblePages(); + } + + _updateHelper(visiblePages) { + if (this.isInPresentationMode) { + return; + } + + let currentId = this._currentPageNumber; + let stillFullyVisible = false; + + for (const page of visiblePages) { + if (page.percent < 100) { + break; + } + + if (page.id === currentId && this._scrollMode === _ui_utils.ScrollMode.VERTICAL && this._spreadMode === _ui_utils.SpreadMode.NONE) { + stillFullyVisible = true; + break; + } + } + + if (!stillFullyVisible) { + currentId = visiblePages[0].id; + } + + this._setCurrentPageNumber(currentId); + } + +} + +exports.PDFViewer = PDFViewer; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseViewer = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(4); + +var _pdf_rendering_queue = __webpack_require__(8); + +var _annotation_layer_builder = __webpack_require__(29); + +var _l10n_utils = __webpack_require__(30); + +var _pdf_page_view = __webpack_require__(31); + +var _pdf_link_service = __webpack_require__(19); + +var _struct_tree_layer_builder = __webpack_require__(32); + +var _text_layer_builder = __webpack_require__(33); + +var _xfa_layer_builder = __webpack_require__(34); + +const DEFAULT_CACHE_SIZE = 10; + +function PDFPageViewBuffer(size) { + const data = []; + + this.push = function (view) { + const i = data.indexOf(view); + + if (i >= 0) { + data.splice(i, 1); + } + + data.push(view); + + if (data.length > size) { + data.shift().destroy(); + } + }; + + this.resize = function (newSize, pagesToKeep) { + size = newSize; + + if (pagesToKeep) { + const pageIdsToKeep = new Set(); + + for (let i = 0, iMax = pagesToKeep.length; i < iMax; ++i) { + pageIdsToKeep.add(pagesToKeep[i].id); + } + + (0, _ui_utils.moveToEndOfArray)(data, function (page) { + return pageIdsToKeep.has(page.id); + }); + } + + while (data.length > size) { + data.shift().destroy(); + } + }; + + this.has = function (view) { + return data.includes(view); + }; +} + +function isSameScale(oldScale, newScale) { + if (newScale === oldScale) { + return true; + } + + if (Math.abs(newScale - oldScale) < 1e-15) { + return true; + } + + return false; +} + +class BaseViewer { + constructor(options) { + if (this.constructor === BaseViewer) { + throw new Error("Cannot initialize BaseViewer."); + } + + const viewerVersion = '2.10.377'; + + if (_pdfjsLib.version !== viewerVersion) { + throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); + } + + this._name = this.constructor.name; + this.container = options.container; + this.viewer = options.viewer || options.container.firstElementChild; + + if (!(this.container?.tagName.toUpperCase() === "DIV" && this.viewer?.tagName.toUpperCase() === "DIV")) { + throw new Error("Invalid `container` and/or `viewer` option."); + } + + if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") { + throw new Error("The `container` must be absolutely positioned."); + } + + this.eventBus = options.eventBus; + this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); + this.downloadManager = options.downloadManager || null; + this.findController = options.findController || null; + this._scriptingManager = options.scriptingManager || null; + this.removePageBorders = options.removePageBorders || false; + this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.renderInteractiveForms = options.renderInteractiveForms !== false; + this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.maxCanvasPixels = options.maxCanvasPixels; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.enableScripting = options.enableScripting === true && !!this._scriptingManager; + this.defaultRenderingQueue = !options.renderingQueue; + + if (this.defaultRenderingQueue) { + this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + this.renderingQueue.setViewer(this); + } else { + this.renderingQueue = options.renderingQueue; + } + + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); + this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN; + this._onBeforeDraw = this._onAfterDraw = null; + + this._resetView(); + + if (this.removePageBorders) { + this.viewer.classList.add("removePageBorders"); + } + + Promise.resolve().then(() => { + this.eventBus.dispatch("baseviewerinit", { + source: this + }); + }); + } + + get pagesCount() { + return this._pages.length; + } + + getPageView(index) { + return this._pages[index]; + } + + get pageViewsReady() { + if (!this._pagesCapability.settled) { + return false; + } + + return this._pages.every(function (pageView) { + return pageView?.pdfPage; + }); + } + + get currentPageNumber() { + return this._currentPageNumber; + } + + set currentPageNumber(val) { + if (!Number.isInteger(val)) { + throw new Error("Invalid page number."); + } + + if (!this.pdfDocument) { + return; + } + + if (!this._setCurrentPageNumber(val, true)) { + console.error(`${this._name}.currentPageNumber: "${val}" is not a valid page.`); + } + } + + _setCurrentPageNumber(val, resetCurrentPageView = false) { + if (this._currentPageNumber === val) { + if (resetCurrentPageView) { + this._resetCurrentPageView(); + } + + return true; + } + + if (!(0 < val && val <= this.pagesCount)) { + return false; + } + + const previous = this._currentPageNumber; + this._currentPageNumber = val; + this.eventBus.dispatch("pagechanging", { + source: this, + pageNumber: val, + pageLabel: this._pageLabels?.[val - 1] ?? null, + previous + }); + + if (resetCurrentPageView) { + this._resetCurrentPageView(); + } + + return true; + } + + get currentPageLabel() { + return this._pageLabels?.[this._currentPageNumber - 1] ?? null; + } + + set currentPageLabel(val) { + if (!this.pdfDocument) { + return; + } + + let page = val | 0; + + if (this._pageLabels) { + const i = this._pageLabels.indexOf(val); + + if (i >= 0) { + page = i + 1; + } + } + + if (!this._setCurrentPageNumber(page, true)) { + console.error(`${this._name}.currentPageLabel: "${val}" is not a valid page.`); + } + } + + get currentScale() { + return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; + } + + set currentScale(val) { + if (isNaN(val)) { + throw new Error("Invalid numeric scale."); + } + + if (!this.pdfDocument) { + return; + } + + this._setScale(val, false); + } + + get currentScaleValue() { + return this._currentScaleValue; + } + + set currentScaleValue(val) { + if (!this.pdfDocument) { + return; + } + + this._setScale(val, false); + } + + get pagesRotation() { + return this._pagesRotation; + } + + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid pages rotation angle."); + } + + if (!this.pdfDocument) { + return; + } + + rotation %= 360; + + if (rotation < 0) { + rotation += 360; + } + + if (this._pagesRotation === rotation) { + return; + } + + this._pagesRotation = rotation; + const pageNumber = this._currentPageNumber; + + for (let i = 0, ii = this._pages.length; i < ii; i++) { + const pageView = this._pages[i]; + pageView.update(pageView.scale, rotation); + } + + if (this._currentScaleValue) { + this._setScale(this._currentScaleValue, true); + } + + this.eventBus.dispatch("rotationchanging", { + source: this, + pagesRotation: rotation, + pageNumber + }); + + if (this.defaultRenderingQueue) { + this.update(); + } + } + + get firstPagePromise() { + return this.pdfDocument ? this._firstPageCapability.promise : null; + } + + get onePageRendered() { + return this.pdfDocument ? this._onePageRenderedCapability.promise : null; + } + + get pagesPromise() { + return this.pdfDocument ? this._pagesCapability.promise : null; + } + + get _viewerElement() { + throw new Error("Not implemented: _viewerElement"); + } + + _onePageRenderedOrForceFetch() { + if (!this.container.offsetParent || this._getVisiblePages().views.length === 0) { + return Promise.resolve(); + } + + return this._onePageRenderedCapability.promise; + } + + setDocument(pdfDocument) { + if (this.pdfDocument) { + this.eventBus.dispatch("pagesdestroy", { + source: this + }); + + this._cancelRendering(); + + this._resetView(); + + if (this.findController) { + this.findController.setDocument(null); + } + + if (this._scriptingManager) { + this._scriptingManager.setDocument(null); + } + } + + this.pdfDocument = pdfDocument; + + if (!pdfDocument) { + return; + } + + const isPureXfa = pdfDocument.isPureXfa; + const pagesCount = pdfDocument.numPages; + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + + this._pagesCapability.promise.then(() => { + this.eventBus.dispatch("pagesloaded", { + source: this, + pagesCount + }); + }); + + this._onBeforeDraw = evt => { + const pageView = this._pages[evt.pageNumber - 1]; + + if (!pageView) { + return; + } + + this._buffer.push(pageView); + }; + + this.eventBus._on("pagerender", this._onBeforeDraw); + + this._onAfterDraw = evt => { + if (evt.cssTransform || this._onePageRenderedCapability.settled) { + return; + } + + this._onePageRenderedCapability.resolve(); + + this.eventBus._off("pagerendered", this._onAfterDraw); + + this._onAfterDraw = null; + }; + + this.eventBus._on("pagerendered", this._onAfterDraw); + + firstPagePromise.then(firstPdfPage => { + this._firstPageCapability.resolve(firstPdfPage); + + this._optionalContentConfigPromise = optionalContentConfigPromise; + const scale = this.currentScale; + const viewport = firstPdfPage.getViewport({ + scale: scale * _ui_utils.CSS_UNITS + }); + const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE ? this : null; + const xfaLayerFactory = isPureXfa ? this : null; + + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const pageView = new _pdf_page_view.PDFPageView({ + container: this._viewerElement, + eventBus: this.eventBus, + id: pageNum, + scale, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + renderingQueue: this.renderingQueue, + textLayerFactory, + textLayerMode: this.textLayerMode, + annotationLayerFactory: this, + xfaLayerFactory, + structTreeLayerFactory: this, + imageResourcesPath: this.imageResourcesPath, + renderInteractiveForms: this.renderInteractiveForms, + renderer: this.renderer, + useOnlyCssZoom: this.useOnlyCssZoom, + maxCanvasPixels: this.maxCanvasPixels, + l10n: this.l10n + }); + + this._pages.push(pageView); + } + + const firstPageView = this._pages[0]; + + if (firstPageView) { + firstPageView.setPdfPage(firstPdfPage); + this.linkService.cachePageRef(1, firstPdfPage.ref); + } + + if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + this._updateSpreadMode(); + } + + this._onePageRenderedOrForceFetch().then(() => { + if (this.findController) { + this.findController.setDocument(pdfDocument); + } + + if (this.enableScripting) { + this._scriptingManager.setDocument(pdfDocument); + } + + if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > 7500) { + this._pagesCapability.resolve(); + + return; + } + + let getPagesLeft = pagesCount - 1; + + if (getPagesLeft <= 0) { + this._pagesCapability.resolve(); + + return; + } + + for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) { + pdfDocument.getPage(pageNum).then(pdfPage => { + const pageView = this._pages[pageNum - 1]; + + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + + this.linkService.cachePageRef(pageNum, pdfPage.ref); + + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }, reason => { + console.error(`Unable to get page ${pageNum} to initialize viewer`, reason); + + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }); + } + }); + + this.eventBus.dispatch("pagesinit", { + source: this + }); + + if (this.defaultRenderingQueue) { + this.update(); + } + }).catch(reason => { + console.error("Unable to initialize viewer", reason); + }); + } + + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error(`${this._name}.setPageLabels: Invalid page labels.`); + } else { + this._pageLabels = labels; + } + + for (let i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + + _resetView() { + this._pages = []; + this._currentPageNumber = 1; + this._currentScale = _ui_utils.UNKNOWN_SCALE; + this._currentScaleValue = null; + this._pageLabels = null; + this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); + this._location = null; + this._pagesRotation = 0; + this._optionalContentConfigPromise = null; + this._pagesRequests = new WeakMap(); + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._scrollMode = _ui_utils.ScrollMode.VERTICAL; + this._spreadMode = _ui_utils.SpreadMode.NONE; + + if (this._onBeforeDraw) { + this.eventBus._off("pagerender", this._onBeforeDraw); + + this._onBeforeDraw = null; + } + + if (this._onAfterDraw) { + this.eventBus._off("pagerendered", this._onAfterDraw); + + this._onAfterDraw = null; + } + + this.viewer.textContent = ""; + + this._updateScrollMode(); + } + + _scrollUpdate() { + if (this.pagesCount === 0) { + return; + } + + this.update(); + } + + _scrollIntoView({ + pageDiv, + pageSpot = null, + pageNumber = null + }) { + (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot); + } + + _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) { + this._currentScaleValue = newValue.toString(); + + if (isSameScale(this._currentScale, newScale)) { + if (preset) { + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: newValue + }); + } + + return; + } + + for (let i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].update(newScale); + } + + this._currentScale = newScale; + + if (!noScroll) { + let page = this._currentPageNumber, + dest; + + if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) { + page = this._location.pageNumber; + dest = [null, { + name: "XYZ" + }, this._location.left, this._location.top, null]; + } + + this.scrollPageIntoView({ + pageNumber: page, + destArray: dest, + allowNegativeOffset: true + }); + } + + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: preset ? newValue : undefined + }); + + if (this.defaultRenderingQueue) { + this.update(); + } + } + + get _pageWidthScaleFactor() { + if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL && !this.isInPresentationMode) { + return 2; + } + + return 1; + } + + _setScale(value, noScroll = false) { + let scale = parseFloat(value); + + if (scale > 0) { + this._setScaleUpdatePages(scale, value, noScroll, false); + } else { + const currentPage = this._pages[this._currentPageNumber - 1]; + + if (!currentPage) { + return; + } + + const noPadding = this.isInPresentationMode || this.removePageBorders; + let hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING; + let vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING; + + if (!noPadding && this._isScrollModeHorizontal) { + [hPadding, vPadding] = [vPadding, hPadding]; + } + + const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this._pageWidthScaleFactor; + const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; + + switch (value) { + case "page-actual": + scale = 1; + break; + + case "page-width": + scale = pageWidthScale; + break; + + case "page-height": + scale = pageHeightScale; + break; + + case "page-fit": + scale = Math.min(pageWidthScale, pageHeightScale); + break; + + case "auto": + const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale); + scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); + break; + + default: + console.error(`${this._name}._setScale: "${value}" is an unknown zoom value.`); + return; + } + + this._setScaleUpdatePages(scale, value, noScroll, true); + } + } + + _resetCurrentPageView() { + if (this.isInPresentationMode) { + this._setScale(this._currentScaleValue, true); + } + + const pageView = this._pages[this._currentPageNumber - 1]; + + this._scrollIntoView({ + pageDiv: pageView.div + }); + } + + pageLabelToPageNumber(label) { + if (!this._pageLabels) { + return null; + } + + const i = this._pageLabels.indexOf(label); + + if (i < 0) { + return null; + } + + return i + 1; + } + + scrollPageIntoView({ + pageNumber, + destArray = null, + allowNegativeOffset = false, + ignoreDestinationZoom = false + }) { + if (!this.pdfDocument) { + return; + } + + const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1]; + + if (!pageView) { + console.error(`${this._name}.scrollPageIntoView: ` + `"${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + + if (this.isInPresentationMode || !destArray) { + this._setCurrentPageNumber(pageNumber, true); + + return; + } + + let x = 0, + y = 0; + let width = 0, + height = 0, + widthScale, + heightScale; + const changeOrientation = pageView.rotation % 180 !== 0; + const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS; + const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS; + let scale = 0; + + switch (destArray[1].name) { + case "XYZ": + x = destArray[2]; + y = destArray[3]; + scale = destArray[4]; + x = x !== null ? x : 0; + y = y !== null ? y : pageHeight; + break; + + case "Fit": + case "FitB": + scale = "page-fit"; + break; + + case "FitH": + case "FitBH": + y = destArray[2]; + scale = "page-width"; + + if (y === null && this._location) { + x = this._location.left; + y = this._location.top; + } else if (typeof y !== "number") { + y = pageHeight; + } + + break; + + case "FitV": + case "FitBV": + x = destArray[2]; + width = pageWidth; + height = pageHeight; + scale = "page-height"; + break; + + case "FitR": + x = destArray[2]; + y = destArray[3]; + width = destArray[4] - x; + height = destArray[5] - y; + const hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; + const vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; + widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS; + heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS; + scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); + break; + + default: + console.error(`${this._name}.scrollPageIntoView: ` + `"${destArray[1].name}" is not a valid destination type.`); + return; + } + + if (!ignoreDestinationZoom) { + if (scale && scale !== this._currentScale) { + this.currentScaleValue = scale; + } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { + this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + } + + if (scale === "page-fit" && !destArray[4]) { + this._scrollIntoView({ + pageDiv: pageView.div, + pageNumber + }); + + return; + } + + const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; + let left = Math.min(boundingRect[0][0], boundingRect[1][0]); + let top = Math.min(boundingRect[0][1], boundingRect[1][1]); + + if (!allowNegativeOffset) { + left = Math.max(left, 0); + top = Math.max(top, 0); + } + + this._scrollIntoView({ + pageDiv: pageView.div, + pageSpot: { + left, + top + }, + pageNumber + }); + } + + _updateLocation(firstPage) { + const currentScale = this._currentScale; + const currentScaleValue = this._currentScaleValue; + const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; + const pageNumber = firstPage.id; + let pdfOpenParams = "#page=" + pageNumber; + pdfOpenParams += "&zoom=" + normalizedScaleValue; + const currentPageView = this._pages[pageNumber - 1]; + const container = this.container; + const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); + const intLeft = Math.round(topLeft[0]); + const intTop = Math.round(topLeft[1]); + pdfOpenParams += "," + intLeft + "," + intTop; + this._location = { + pageNumber, + scale: normalizedScaleValue, + top: intTop, + left: intLeft, + rotation: this._pagesRotation, + pdfOpenParams + }; + } + + _updateHelper(visiblePages) { + throw new Error("Not implemented: _updateHelper"); + } + + update() { + const visible = this._getVisiblePages(); + + const visiblePages = visible.views, + numVisiblePages = visiblePages.length; + + if (numVisiblePages === 0) { + return; + } + + const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); + + this._buffer.resize(newCacheSize, visiblePages); + + this.renderingQueue.renderHighestPriority(visible); + + this._updateHelper(visiblePages); + + this._updateLocation(visible.first); + + this.eventBus.dispatch("updateviewarea", { + source: this, + location: this._location + }); + } + + containsElement(element) { + return this.container.contains(element); + } + + focus() { + this.container.focus(); + } + + get _isScrollModeHorizontal() { + return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL; + } + + get _isContainerRtl() { + return getComputedStyle(this.container).direction === "rtl"; + } + + get isInPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; + } + + get isChangingPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING; + } + + get isHorizontalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; + } + + get isVerticalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight; + } + + _getCurrentVisiblePage() { + if (!this.pagesCount) { + return { + views: [] + }; + } + + const pageView = this._pages[this._currentPageNumber - 1]; + const element = pageView.div; + const view = { + id: pageView.id, + x: element.offsetLeft + element.clientLeft, + y: element.offsetTop + element.clientTop, + view: pageView + }; + return { + first: view, + last: view, + views: [view] + }; + } + + _getVisiblePages() { + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._pages, + sortByVisibility: true, + horizontal: this._isScrollModeHorizontal, + rtl: this._isScrollModeHorizontal && this._isContainerRtl + }); + } + + isPageVisible(pageNumber) { + if (!this.pdfDocument) { + return false; + } + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`${this._name}.isPageVisible: "${pageNumber}" is not a valid page.`); + return false; + } + + return this._getVisiblePages().views.some(function (view) { + return view.id === pageNumber; + }); + } + + isPageCached(pageNumber) { + if (!this.pdfDocument || !this._buffer) { + return false; + } + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`${this._name}.isPageCached: "${pageNumber}" is not a valid page.`); + return false; + } + + const pageView = this._pages[pageNumber - 1]; + + if (!pageView) { + return false; + } + + return this._buffer.has(pageView); + } + + cleanup() { + for (let i = 0, ii = this._pages.length; i < ii; i++) { + if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + this._pages[i].reset(); + } + } + } + + _cancelRendering() { + for (let i = 0, ii = this._pages.length; i < ii; i++) { + if (this._pages[i]) { + this._pages[i].cancelRendering(); + } + } + } + + _ensurePdfPageLoaded(pageView) { + if (pageView.pdfPage) { + return Promise.resolve(pageView.pdfPage); + } + + if (this._pagesRequests.has(pageView)) { + return this._pagesRequests.get(pageView); + } + + const promise = this.pdfDocument.getPage(pageView.id).then(pdfPage => { + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + + this._pagesRequests.delete(pageView); + + return pdfPage; + }).catch(reason => { + console.error("Unable to get page for page view", reason); + + this._pagesRequests.delete(pageView); + }); + + this._pagesRequests.set(pageView, promise); + + return promise; + } + + forceRendering(currentlyVisiblePages) { + const visiblePages = currentlyVisiblePages || this._getVisiblePages(); + + const scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down; + const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead); + + if (pageView) { + this._ensurePdfPageLoaded(pageView).then(() => { + this.renderingQueue.renderView(pageView); + }); + + return true; + } + + return false; + } + + createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) { + return new _text_layer_builder.TextLayerBuilder({ + textLayerDiv, + eventBus, + pageIndex, + viewport, + findController: this.isInPresentationMode ? null : this.findController, + enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection + }); + } + + createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = false, l10n = _l10n_utils.NullL10n, enableScripting = null, hasJSActionsPromise = null, mouseState = null) { + return new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv, + pdfPage, + annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage, + imageResourcesPath, + renderInteractiveForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + l10n, + enableScripting: enableScripting ?? this.enableScripting, + hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(), + mouseState: mouseState || this._scriptingManager?.mouseState + }); + } + + createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) { + return new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv, + pdfPage, + annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage + }); + } + + createStructTreeLayerBuilder(pdfPage) { + return new _struct_tree_layer_builder.StructTreeLayerBuilder({ + pdfPage + }); + } + + get hasEqualPageSizes() { + const firstPageView = this._pages[0]; + + for (let i = 1, ii = this._pages.length; i < ii; ++i) { + const pageView = this._pages[i]; + + if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { + return false; + } + } + + return true; + } + + getPagesOverview() { + return this._pages.map(pageView => { + const viewport = pageView.pdfPage.getViewport({ + scale: 1 + }); + + if (!this.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) { + return { + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation + }; + } + + return { + width: viewport.height, + height: viewport.width, + rotation: (viewport.rotation - 90) % 360 + }; + }); + } + + get optionalContentConfigPromise() { + if (!this.pdfDocument) { + return Promise.resolve(null); + } + + if (!this._optionalContentConfigPromise) { + return this.pdfDocument.getOptionalContentConfig(); + } + + return this._optionalContentConfigPromise; + } + + set optionalContentConfigPromise(promise) { + if (!(promise instanceof Promise)) { + throw new Error(`Invalid optionalContentConfigPromise: ${promise}`); + } + + if (!this.pdfDocument) { + return; + } + + if (!this._optionalContentConfigPromise) { + return; + } + + this._optionalContentConfigPromise = promise; + + for (const pageView of this._pages) { + pageView.update(pageView.scale, pageView.rotation, promise); + } + + this.update(); + this.eventBus.dispatch("optionalcontentconfigchanged", { + source: this, + promise + }); + } + + get scrollMode() { + return this._scrollMode; + } + + set scrollMode(mode) { + if (this._scrollMode === mode) { + return; + } + + if (!(0, _ui_utils.isValidScrollMode)(mode)) { + throw new Error(`Invalid scroll mode: ${mode}`); + } + + this._scrollMode = mode; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + + this._updateScrollMode(this._currentPageNumber); + } + + _updateScrollMode(pageNumber = null) { + const scrollMode = this._scrollMode, + viewer = this.viewer; + viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL); + viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED); + + if (!this.pdfDocument || !pageNumber) { + return; + } + + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this._setScale(this._currentScaleValue, true); + } + + this._setCurrentPageNumber(pageNumber, true); + + this.update(); + } + + get spreadMode() { + return this._spreadMode; + } + + set spreadMode(mode) { + if (this._spreadMode === mode) { + return; + } + + if (!(0, _ui_utils.isValidSpreadMode)(mode)) { + throw new Error(`Invalid spread mode: ${mode}`); + } + + this._spreadMode = mode; + this.eventBus.dispatch("spreadmodechanged", { + source: this, + mode + }); + + this._updateSpreadMode(this._currentPageNumber); + } + + _updateSpreadMode(pageNumber = null) { + if (!this.pdfDocument) { + return; + } + + const viewer = this.viewer, + pages = this._pages; + viewer.textContent = ""; + + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + for (let i = 0, iMax = pages.length; i < iMax; ++i) { + viewer.appendChild(pages[i].div); + } + } else { + const parity = this._spreadMode - 1; + let spread = null; + + for (let i = 0, iMax = pages.length; i < iMax; ++i) { + if (spread === null) { + spread = document.createElement("div"); + spread.className = "spread"; + viewer.appendChild(spread); + } else if (i % 2 === parity) { + spread = spread.cloneNode(false); + viewer.appendChild(spread); + } + + spread.appendChild(pages[i].div); + } + } + + if (!pageNumber) { + return; + } + + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this._setScale(this._currentScaleValue, true); + } + + this._setCurrentPageNumber(pageNumber, true); + + this.update(); + } + + _getPageAdvance(currentPageNumber, previous = false) { + if (this.isInPresentationMode) { + return 1; + } + + switch (this._scrollMode) { + case _ui_utils.ScrollMode.WRAPPED: + { + const { + views + } = this._getVisiblePages(), + pageLayout = new Map(); + + for (const { + id, + y, + percent, + widthPercent + } of views) { + if (percent === 0 || widthPercent < 100) { + continue; + } + + let yArray = pageLayout.get(y); + + if (!yArray) { + pageLayout.set(y, yArray || (yArray = [])); + } + + yArray.push(id); + } + + for (const yArray of pageLayout.values()) { + const currentIndex = yArray.indexOf(currentPageNumber); + + if (currentIndex === -1) { + continue; + } + + const numPages = yArray.length; + + if (numPages === 1) { + break; + } + + if (previous) { + for (let i = currentIndex - 1, ii = 0; i >= ii; i--) { + const currentId = yArray[i], + expectedId = yArray[i + 1] - 1; + + if (currentId < expectedId) { + return currentPageNumber - expectedId; + } + } + } else { + for (let i = currentIndex + 1, ii = numPages; i < ii; i++) { + const currentId = yArray[i], + expectedId = yArray[i - 1] + 1; + + if (currentId > expectedId) { + return expectedId - currentPageNumber; + } + } + } + + if (previous) { + const firstId = yArray[0]; + + if (firstId < currentPageNumber) { + return currentPageNumber - firstId + 1; + } + } else { + const lastId = yArray[numPages - 1]; + + if (lastId > currentPageNumber) { + return lastId - currentPageNumber + 1; + } + } + + break; + } + + break; + } + + case _ui_utils.ScrollMode.HORIZONTAL: + { + break; + } + + case _ui_utils.ScrollMode.VERTICAL: + { + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + break; + } + + const parity = this._spreadMode - 1; + + if (previous && currentPageNumber % 2 !== parity) { + break; + } else if (!previous && currentPageNumber % 2 === parity) { + break; + } + + const { + views + } = this._getVisiblePages(), + expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1; + + for (const { + id, + percent, + widthPercent + } of views) { + if (id !== expectedId) { + continue; + } + + if (percent > 0 && widthPercent === 100) { + return 2; + } + + break; + } + + break; + } + } + + return 1; + } + + nextPage() { + const currentPageNumber = this._currentPageNumber, + pagesCount = this.pagesCount; + + if (currentPageNumber >= pagesCount) { + return false; + } + + const advance = this._getPageAdvance(currentPageNumber, false) || 1; + this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount); + return true; + } + + previousPage() { + const currentPageNumber = this._currentPageNumber; + + if (currentPageNumber <= 1) { + return false; + } + + const advance = this._getPageAdvance(currentPageNumber, true) || 1; + this.currentPageNumber = Math.max(currentPageNumber - advance, 1); + return true; + } + +} + +exports.BaseViewer = BaseViewer; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _l10n_utils = __webpack_require__(30); + +var _pdf_link_service = __webpack_require__(19); + +class AnnotationLayerBuilder { + constructor({ + pageDiv, + pdfPage, + linkService, + downloadManager, + annotationStorage = null, + imageResourcesPath = "", + renderInteractiveForms = true, + l10n = _l10n_utils.NullL10n, + enableScripting = false, + hasJSActionsPromise = null, + mouseState = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.linkService = linkService; + this.downloadManager = downloadManager; + this.imageResourcesPath = imageResourcesPath; + this.renderInteractiveForms = renderInteractiveForms; + this.l10n = l10n; + this.annotationStorage = annotationStorage; + this.enableScripting = enableScripting; + this._hasJSActionsPromise = hasJSActionsPromise; + this._mouseState = mouseState; + this.div = null; + this._cancelled = false; + } + + render(viewport, intent = "display") { + return Promise.all([this.pdfPage.getAnnotations({ + intent + }), this._hasJSActionsPromise]).then(([annotations, hasJSActions = false]) => { + if (this._cancelled) { + return; + } + + if (annotations.length === 0) { + return; + } + + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + annotations, + page: this.pdfPage, + imageResourcesPath: this.imageResourcesPath, + renderInteractiveForms: this.renderInteractiveForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + annotationStorage: this.annotationStorage, + enableScripting: this.enableScripting, + hasJSActions, + mouseState: this._mouseState + }; + + if (this.div) { + _pdfjsLib.AnnotationLayer.update(parameters); + } else { + this.div = document.createElement("div"); + this.div.className = "annotationLayer"; + this.pageDiv.appendChild(this.div); + parameters.div = this.div; + + _pdfjsLib.AnnotationLayer.render(parameters); + + this.l10n.translate(this.div); + } + }); + } + + cancel() { + this._cancelled = true; + } + + hide() { + if (!this.div) { + return; + } + + this.div.hidden = true; + } + +} + +exports.AnnotationLayerBuilder = AnnotationLayerBuilder; + +class DefaultAnnotationLayerFactory { + createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = true, l10n = _l10n_utils.NullL10n, enableScripting = false, hasJSActionsPromise = null, mouseState = null) { + return new AnnotationLayerBuilder({ + pageDiv, + pdfPage, + imageResourcesPath, + renderInteractiveForms, + linkService: new _pdf_link_service.SimpleLinkService(), + l10n, + annotationStorage, + enableScripting, + hasJSActionsPromise, + mouseState + }); + } + +} + +exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.fixupLangCode = fixupLangCode; +exports.getL10nFallback = getL10nFallback; +exports.NullL10n = void 0; +const DEFAULT_L10N_STRINGS = { + of_pages: "of {{pagesCount}}", + page_of_pages: "({{pageNumber}} of {{pagesCount}})", + document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", + document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", + document_properties_date_string: "{{date}}, {{time}}", + document_properties_page_size_unit_inches: "in", + document_properties_page_size_unit_millimeters: "mm", + document_properties_page_size_orientation_portrait: "portrait", + document_properties_page_size_orientation_landscape: "landscape", + document_properties_page_size_name_a3: "A3", + document_properties_page_size_name_a4: "A4", + document_properties_page_size_name_letter: "Letter", + document_properties_page_size_name_legal: "Legal", + document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", + document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", + document_properties_linearized_yes: "Yes", + document_properties_linearized_no: "No", + print_progress_percent: "{{progress}}%", + "toggle_sidebar.title": "Toggle Sidebar", + "toggle_sidebar_notification2.title": "Toggle Sidebar (document contains outline/attachments/layers)", + additional_layers: "Additional Layers", + page_landmark: "Page {{page}}", + thumb_page_title: "Page {{page}}", + thumb_page_canvas: "Thumbnail of Page {{page}}", + find_reached_top: "Reached top of document, continued from bottom", + find_reached_bottom: "Reached end of document, continued from top", + "find_match_count[one]": "{{current}} of {{total}} match", + "find_match_count[other]": "{{current}} of {{total}} matches", + "find_match_count_limit[one]": "More than {{limit}} match", + "find_match_count_limit[other]": "More than {{limit}} matches", + find_not_found: "Phrase not found", + error_version_info: "PDF.js v{{version}} (build: {{build}})", + error_message: "Message: {{message}}", + error_stack: "Stack: {{stack}}", + error_file: "File: {{file}}", + error_line: "Line: {{line}}", + rendering_error: "An error occurred while rendering the page.", + page_scale_width: "Page Width", + page_scale_fit: "Page Fit", + page_scale_auto: "Automatic Zoom", + page_scale_actual: "Actual Size", + page_scale_percent: "{{scale}}%", + loading: "Loading…", + loading_error: "An error occurred while loading the PDF.", + invalid_file_error: "Invalid or corrupted PDF file.", + missing_file_error: "Missing PDF file.", + unexpected_response_error: "Unexpected server response.", + printing_not_supported: "Warning: Printing is not fully supported by this browser.", + printing_not_ready: "Warning: The PDF is not fully loaded for printing.", + web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts." +}; + +function getL10nFallback(key, args) { + switch (key) { + case "find_match_count": + key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; + break; + + case "find_match_count_limit": + key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; + break; + } + + return DEFAULT_L10N_STRINGS[key] || ""; +} + +const PARTIAL_LANG_CODES = { + en: "en-US", + es: "es-ES", + fy: "fy-NL", + ga: "ga-IE", + gu: "gu-IN", + hi: "hi-IN", + hy: "hy-AM", + nb: "nb-NO", + ne: "ne-NP", + nn: "nn-NO", + pa: "pa-IN", + pt: "pt-PT", + sv: "sv-SE", + zh: "zh-CN" +}; + +function fixupLangCode(langCode) { + return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode; +} + +function formatL10nValue(text, args) { + if (!args) { + return text; + } + + return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { + return name in args ? args[name] : "{{" + name + "}}"; + }); +} + +const NullL10n = { + async getLanguage() { + return "en-us"; + }, + + async getDirection() { + return "ltr"; + }, + + async get(key, args = null, fallback = getL10nFallback(key, args)) { + return formatL10nValue(fallback, args); + }, + + async translate(element) {} + +}; +exports.NullL10n = NullL10n; + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPageView = void 0; + +var _ui_utils = __webpack_require__(4); + +var _pdfjsLib = __webpack_require__(5); + +var _l10n_utils = __webpack_require__(30); + +var _pdf_rendering_queue = __webpack_require__(8); + +var _viewer_compatibility = __webpack_require__(2); + +const MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216; + +class PDFPageView { + constructor(options) { + const container = options.container; + const defaultViewport = options.defaultViewport; + this.id = options.id; + this.renderingId = "page" + this.id; + this.pdfPage = null; + this.pageLabel = null; + this.rotation = 0; + this.scale = options.scale || _ui_utils.DEFAULT_SCALE; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; + this.hasRestrictedScaling = false; + this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.renderInteractiveForms = options.renderInteractiveForms !== false; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; + this.eventBus = options.eventBus; + this.renderingQueue = options.renderingQueue; + this.textLayerFactory = options.textLayerFactory; + this.annotationLayerFactory = options.annotationLayerFactory; + this.xfaLayerFactory = options.xfaLayerFactory; + this.structTreeLayerFactory = options.structTreeLayerFactory; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.paintTask = null; + this.paintedViewportMap = new WeakMap(); + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; + this.resume = null; + this._renderError = null; + this.annotationLayer = null; + this.textLayer = null; + this.zoomLayer = null; + this.xfaLayer = null; + this.structTreeLayer = null; + const div = document.createElement("div"); + div.className = "page"; + div.style.width = Math.floor(this.viewport.width) + "px"; + div.style.height = Math.floor(this.viewport.height) + "px"; + div.setAttribute("data-page-number", this.id); + div.setAttribute("role", "region"); + this.l10n.get("page_landmark", { + page: this.id + }).then(msg => { + div.setAttribute("aria-label", msg); + }); + this.div = div; + container.appendChild(div); + } + + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: this.scale * _ui_utils.CSS_UNITS, + rotation: totalRotation + }); + this.reset(); + } + + destroy() { + this.reset(); + + if (this.pdfPage) { + this.pdfPage.cleanup(); + } + } + + async _renderAnnotationLayer() { + let error = null; + + try { + await this.annotationLayer.render(this.viewport, "display"); + } catch (ex) { + error = ex; + } finally { + this.eventBus.dispatch("annotationlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + + async _renderXfaLayer() { + let error = null; + + try { + await this.xfaLayer.render(this.viewport, "display"); + } catch (ex) { + error = ex; + } finally { + this.eventBus.dispatch("xfalayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + + _resetZoomLayer(removeFromDOM = false) { + if (!this.zoomLayer) { + return; + } + + const zoomLayerCanvas = this.zoomLayer.firstChild; + this.paintedViewportMap.delete(zoomLayerCanvas); + zoomLayerCanvas.width = 0; + zoomLayerCanvas.height = 0; + + if (removeFromDOM) { + this.zoomLayer.remove(); + } + + this.zoomLayer = null; + } + + reset({ + keepZoomLayer = false, + keepAnnotationLayer = false, + keepXfaLayer = false + } = {}) { + this.cancelRendering({ + keepAnnotationLayer, + keepXfaLayer + }); + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; + const div = this.div; + div.style.width = Math.floor(this.viewport.width) + "px"; + div.style.height = Math.floor(this.viewport.height) + "px"; + const childNodes = div.childNodes, + zoomLayerNode = keepZoomLayer && this.zoomLayer || null, + annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null, + xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null; + + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + switch (node) { + case zoomLayerNode: + case annotationLayerNode: + case xfaLayerNode: + continue; + } + + div.removeChild(node); + } + + div.removeAttribute("data-loaded"); + + if (annotationLayerNode) { + this.annotationLayer.hide(); + } + + if (xfaLayerNode) { + this.xfaLayer.hide(); + } + + if (!zoomLayerNode) { + if (this.canvas) { + this.paintedViewportMap.delete(this.canvas); + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + + this._resetZoomLayer(); + } + + if (this.svg) { + this.paintedViewportMap.delete(this.svg); + delete this.svg; + } + + this.loadingIconDiv = document.createElement("div"); + this.loadingIconDiv.className = "loadingIcon"; + this.loadingIconDiv.setAttribute("role", "img"); + this.l10n.get("loading").then(msg => { + this.loadingIconDiv?.setAttribute("aria-label", msg); + }); + div.appendChild(this.loadingIconDiv); + } + + update(scale, rotation, optionalContentConfigPromise = null) { + this.scale = scale || this.scale; + + if (typeof rotation !== "undefined") { + this.rotation = rotation; + } + + if (optionalContentConfigPromise instanceof Promise) { + this._optionalContentConfigPromise = optionalContentConfigPromise; + } + + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: this.scale * _ui_utils.CSS_UNITS, + rotation: totalRotation + }); + + if (this.svg) { + this.cssTransform({ + target: this.svg, + redrawAnnotationLayer: true, + redrawXfaLayer: true + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + + let isScalingRestricted = false; + + if (this.canvas && this.maxCanvasPixels > 0) { + const outputScale = this.outputScale; + + if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) { + isScalingRestricted = true; + } + } + + if (this.canvas) { + if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { + this.cssTransform({ + target: this.canvas, + redrawAnnotationLayer: true, + redrawXfaLayer: true + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + + if (!this.zoomLayer && !this.canvas.hidden) { + this.zoomLayer = this.canvas.parentNode; + this.zoomLayer.style.position = "absolute"; + } + } + + if (this.zoomLayer) { + this.cssTransform({ + target: this.zoomLayer.firstChild + }); + } + + this.reset({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepXfaLayer: true + }); + } + + cancelRendering({ + keepAnnotationLayer = false, + keepXfaLayer = false + } = {}) { + if (this.paintTask) { + this.paintTask.cancel(); + this.paintTask = null; + } + + this.resume = null; + + if (this.textLayer) { + this.textLayer.cancel(); + this.textLayer = null; + } + + if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) { + this.annotationLayer.cancel(); + this.annotationLayer = null; + } + + if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) { + this.xfaLayer.cancel(); + this.xfaLayer = null; + } + + if (this._onTextLayerRendered) { + this.eventBus._off("textlayerrendered", this._onTextLayerRendered); + + this._onTextLayerRendered = null; + } + } + + cssTransform({ + target, + redrawAnnotationLayer = false, + redrawXfaLayer = false + }) { + const width = this.viewport.width; + const height = this.viewport.height; + const div = this.div; + target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + "px"; + target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + "px"; + const relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; + const absRotation = Math.abs(relativeRotation); + let scaleX = 1, + scaleY = 1; + + if (absRotation === 90 || absRotation === 270) { + scaleX = height / width; + scaleY = width / height; + } + + target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; + + if (this.textLayer) { + const textLayerViewport = this.textLayer.viewport; + const textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; + const textAbsRotation = Math.abs(textRelativeRotation); + let scale = width / textLayerViewport.width; + + if (textAbsRotation === 90 || textAbsRotation === 270) { + scale = width / textLayerViewport.height; + } + + const textLayerDiv = this.textLayer.textLayerDiv; + let transX, transY; + + switch (textAbsRotation) { + case 0: + transX = transY = 0; + break; + + case 90: + transX = 0; + transY = "-" + textLayerDiv.style.height; + break; + + case 180: + transX = "-" + textLayerDiv.style.width; + transY = "-" + textLayerDiv.style.height; + break; + + case 270: + transX = "-" + textLayerDiv.style.width; + transY = 0; + break; + + default: + console.error("Bad rotation value."); + break; + } + + textLayerDiv.style.transform = `rotate(${textAbsRotation}deg) ` + `scale(${scale}) ` + `translate(${transX}, ${transY})`; + textLayerDiv.style.transformOrigin = "0% 0%"; + } + + if (redrawAnnotationLayer && this.annotationLayer) { + this._renderAnnotationLayer(); + } + + if (redrawXfaLayer && this.xfaLayer) { + this._renderXfaLayer(); + } + } + + get width() { + return this.viewport.width; + } + + get height() { + return this.viewport.height; + } + + getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y); + } + + draw() { + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + this.reset(); + } + + const { + div, + pdfPage + } = this; + + if (!pdfPage) { + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + + if (this.loadingIconDiv) { + div.removeChild(this.loadingIconDiv); + delete this.loadingIconDiv; + } + + return Promise.reject(new Error("pdfPage is not loaded")); + } + + this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; + const canvasWrapper = document.createElement("div"); + canvasWrapper.style.width = div.style.width; + canvasWrapper.style.height = div.style.height; + canvasWrapper.classList.add("canvasWrapper"); + + if (this.annotationLayer?.div) { + div.insertBefore(canvasWrapper, this.annotationLayer.div); + } else { + div.appendChild(canvasWrapper); + } + + let textLayer = null; + + if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) { + const textLayerDiv = document.createElement("div"); + textLayerDiv.className = "textLayer"; + textLayerDiv.style.width = canvasWrapper.style.width; + textLayerDiv.style.height = canvasWrapper.style.height; + + if (this.annotationLayer?.div) { + div.insertBefore(textLayerDiv, this.annotationLayer.div); + } else { + div.appendChild(textLayerDiv); + } + + textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE, this.eventBus); + } + + this.textLayer = textLayer; + + if (this.xfaLayer?.div) { + div.appendChild(this.xfaLayer.div); + } + + let renderContinueCallback = null; + + if (this.renderingQueue) { + renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; + + this.resume = () => { + this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; + cont(); + }; + + return; + } + + cont(); + }; + } + + const finishPaintTask = async (error = null) => { + if (paintTask === this.paintTask) { + this.paintTask = null; + } + + if (error instanceof _pdfjsLib.RenderingCancelledException) { + this._renderError = null; + return; + } + + this._renderError = error; + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + + if (this.loadingIconDiv) { + div.removeChild(this.loadingIconDiv); + delete this.loadingIconDiv; + } + + this._resetZoomLayer(true); + + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: false, + timestamp: performance.now(), + error: this._renderError + }); + + if (error) { + throw error; + } + }; + + const paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); + paintTask.onRenderContinue = renderContinueCallback; + this.paintTask = paintTask; + const resultPromise = paintTask.promise.then(() => { + return finishPaintTask(null).then(() => { + if (textLayer) { + const readableStream = pdfPage.streamTextContent({ + normalizeWhitespace: true, + includeMarkedContent: true + }); + textLayer.setTextContentStream(readableStream); + textLayer.render(); + } + }); + }, function (reason) { + return finishPaintTask(reason); + }); + + if (this.annotationLayerFactory) { + if (!this.annotationLayer) { + this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, this.imageResourcesPath, this.renderInteractiveForms, this.l10n, null, null, null); + } + + this._renderAnnotationLayer(); + } + + if (this.xfaLayerFactory) { + if (!this.xfaLayer) { + this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(div, pdfPage, null); + } + + this._renderXfaLayer(); + } + + if (this.structTreeLayerFactory && this.textLayer && this.canvas) { + this._onTextLayerRendered = event => { + if (event.pageNumber !== this.id) { + return; + } + + this.eventBus._off("textlayerrendered", this._onTextLayerRendered); + + this._onTextLayerRendered = null; + + if (!this.canvas) { + return; + } + + this.pdfPage.getStructTree().then(tree => { + if (!tree) { + return; + } + + if (!this.canvas) { + return; + } + + const treeDom = this.structTreeLayer.render(tree); + treeDom.classList.add("structTree"); + this.canvas.appendChild(treeDom); + }); + }; + + this.eventBus._on("textlayerrendered", this._onTextLayerRendered); + + this.structTreeLayer = this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage); + } + + div.setAttribute("data-loaded", true); + this.eventBus.dispatch("pagerender", { + source: this, + pageNumber: this.id + }); + return resultPromise; + } + + paintOnCanvas(canvasWrapper) { + const renderCapability = (0, _pdfjsLib.createPromiseCapability)(); + const result = { + promise: renderCapability.promise, + + onRenderContinue(cont) { + cont(); + }, + + cancel() { + renderTask.cancel(); + } + + }; + const viewport = this.viewport; + const canvas = document.createElement("canvas"); + canvas.hidden = true; + let isCanvasHidden = true; + + const showCanvas = function () { + if (isCanvasHidden) { + canvas.hidden = false; + isCanvasHidden = false; + } + }; + + canvasWrapper.appendChild(canvas); + this.canvas = canvas; + canvas.mozOpaque = true; + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = (0, _ui_utils.getOutputScale)(ctx); + this.outputScale = outputScale; + + if (this.useOnlyCssZoom) { + const actualSizeViewport = viewport.clone({ + scale: _ui_utils.CSS_UNITS + }); + outputScale.sx *= actualSizeViewport.width / viewport.width; + outputScale.sy *= actualSizeViewport.height / viewport.height; + outputScale.scaled = true; + } + + if (this.maxCanvasPixels > 0) { + const pixelsInViewport = viewport.width * viewport.height; + const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); + + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale; + outputScale.sy = maxScale; + outputScale.scaled = true; + this.hasRestrictedScaling = true; + } else { + this.hasRestrictedScaling = false; + } + } + + const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); + const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); + canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); + canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); + canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; + canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px"; + this.paintedViewportMap.set(canvas, viewport); + const transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; + const renderContext = { + canvasContext: ctx, + transform, + viewport: this.viewport, + renderInteractiveForms: this.renderInteractiveForms, + optionalContentConfigPromise: this._optionalContentConfigPromise + }; + const renderTask = this.pdfPage.render(renderContext); + + renderTask.onContinue = function (cont) { + showCanvas(); + + if (result.onRenderContinue) { + result.onRenderContinue(cont); + } else { + cont(); + } + }; + + renderTask.promise.then(function () { + showCanvas(); + renderCapability.resolve(undefined); + }, function (error) { + showCanvas(); + renderCapability.reject(error); + }); + return result; + } + + paintOnSvg(wrapper) { + let cancelled = false; + + const ensureNotCancelled = () => { + if (cancelled) { + throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`, "svg"); + } + }; + + const pdfPage = this.pdfPage; + const actualSizeViewport = this.viewport.clone({ + scale: _ui_utils.CSS_UNITS + }); + const promise = pdfPage.getOperatorList().then(opList => { + ensureNotCancelled(); + const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs, _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL); + return svgGfx.getSVG(opList, actualSizeViewport).then(svg => { + ensureNotCancelled(); + this.svg = svg; + this.paintedViewportMap.set(svg, actualSizeViewport); + svg.style.width = wrapper.style.width; + svg.style.height = wrapper.style.height; + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + wrapper.appendChild(svg); + }); + }); + return { + promise, + + onRenderContinue(cont) { + cont(); + }, + + cancel() { + cancelled = true; + } + + }; + } + + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + + if (this.pageLabel !== null) { + this.div.setAttribute("data-page-label", this.pageLabel); + } else { + this.div.removeAttribute("data-page-label"); + } + } + +} + +exports.PDFPageView = PDFPageView; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StructTreeLayerBuilder = exports.DefaultStructTreeLayerFactory = void 0; +const PDF_ROLE_TO_HTML_ROLE = { + Document: null, + DocumentFragment: null, + Part: "group", + Sect: "group", + Div: "group", + Aside: "note", + NonStruct: "none", + P: null, + H: "heading", + Title: null, + FENote: "note", + Sub: "group", + Lbl: null, + Span: null, + Em: null, + Strong: null, + Link: "link", + Annot: "note", + Form: "form", + Ruby: null, + RB: null, + RT: null, + RP: null, + Warichu: null, + WT: null, + WP: null, + L: "list", + LI: "listitem", + LBody: null, + Table: "table", + TR: "row", + TH: "columnheader", + TD: "cell", + THead: "columnheader", + TBody: null, + TFoot: null, + Caption: null, + Figure: "figure", + Formula: null, + Artifact: null +}; +const HEADING_PATTERN = /^H(\d+)$/; + +class StructTreeLayerBuilder { + constructor({ + pdfPage + }) { + this.pdfPage = pdfPage; + } + + render(structTree) { + return this._walk(structTree); + } + + _setAttributes(structElement, htmlElement) { + if (structElement.alt !== undefined) { + htmlElement.setAttribute("aria-label", structElement.alt); + } + + if (structElement.id !== undefined) { + htmlElement.setAttribute("aria-owns", structElement.id); + } + } + + _walk(node) { + if (!node) { + return null; + } + + const element = document.createElement("span"); + + if ("role" in node) { + const { + role + } = node; + const match = role.match(HEADING_PATTERN); + + if (match) { + element.setAttribute("role", "heading"); + element.setAttribute("aria-level", match[1]); + } else if (PDF_ROLE_TO_HTML_ROLE[role]) { + element.setAttribute("role", PDF_ROLE_TO_HTML_ROLE[role]); + } + } + + this._setAttributes(node, element); + + if (node.children) { + if (node.children.length === 1 && "id" in node.children[0]) { + this._setAttributes(node.children[0], element); + } else { + for (const kid of node.children) { + element.appendChild(this._walk(kid)); + } + } + } + + return element; + } + +} + +exports.StructTreeLayerBuilder = StructTreeLayerBuilder; + +class DefaultStructTreeLayerFactory { + createStructTreeLayerBuilder(pdfPage) { + return new StructTreeLayerBuilder({ + pdfPage + }); + } + +} + +exports.DefaultStructTreeLayerFactory = DefaultStructTreeLayerFactory; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerBuilder = exports.DefaultTextLayerFactory = void 0; + +var _pdfjsLib = __webpack_require__(5); + +const EXPAND_DIVS_TIMEOUT = 300; + +class TextLayerBuilder { + constructor({ + textLayerDiv, + eventBus, + pageIndex, + viewport, + findController = null, + enhanceTextSelection = false + }) { + this.textLayerDiv = textLayerDiv; + this.eventBus = eventBus; + this.textContent = null; + this.textContentItemsStr = []; + this.textContentStream = null; + this.renderingDone = false; + this.pageIdx = pageIndex; + this.pageNumber = this.pageIdx + 1; + this.matches = []; + this.viewport = viewport; + this.textDivs = []; + this.findController = findController; + this.textLayerRenderTask = null; + this.enhanceTextSelection = enhanceTextSelection; + this._onUpdateTextLayerMatches = null; + + this._bindMouse(); + } + + _finishRendering() { + this.renderingDone = true; + + if (!this.enhanceTextSelection) { + const endOfContent = document.createElement("div"); + endOfContent.className = "endOfContent"; + this.textLayerDiv.appendChild(endOfContent); + } + + this.eventBus.dispatch("textlayerrendered", { + source: this, + pageNumber: this.pageNumber, + numTextDivs: this.textDivs.length + }); + } + + render(timeout = 0) { + if (!(this.textContent || this.textContentStream) || this.renderingDone) { + return; + } + + this.cancel(); + this.textDivs = []; + const textLayerFrag = document.createDocumentFragment(); + this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ + textContent: this.textContent, + textContentStream: this.textContentStream, + container: textLayerFrag, + viewport: this.viewport, + textDivs: this.textDivs, + textContentItemsStr: this.textContentItemsStr, + timeout, + enhanceTextSelection: this.enhanceTextSelection + }); + this.textLayerRenderTask.promise.then(() => { + this.textLayerDiv.appendChild(textLayerFrag); + + this._finishRendering(); + + this._updateMatches(); + }, function (reason) {}); + + if (!this._onUpdateTextLayerMatches) { + this._onUpdateTextLayerMatches = evt => { + if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) { + this._updateMatches(); + } + }; + + this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); + } + } + + cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel(); + this.textLayerRenderTask = null; + } + + if (this._onUpdateTextLayerMatches) { + this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); + + this._onUpdateTextLayerMatches = null; + } + } + + setTextContentStream(readableStream) { + this.cancel(); + this.textContentStream = readableStream; + } + + setTextContent(textContent) { + this.cancel(); + this.textContent = textContent; + } + + _convertMatches(matches, matchesLength) { + if (!matches) { + return []; + } + + const { + textContentItemsStr + } = this; + let i = 0, + iIndex = 0; + const end = textContentItemsStr.length - 1; + const result = []; + + for (let m = 0, mm = matches.length; m < mm; m++) { + let matchIdx = matches[m]; + + while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + + if (i === textContentItemsStr.length) { + console.error("Could not find a matching mapping"); + } + + const match = { + begin: { + divIdx: i, + offset: matchIdx - iIndex + } + }; + matchIdx += matchesLength[m]; + + while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + + match.end = { + divIdx: i, + offset: matchIdx - iIndex + }; + result.push(match); + } + + return result; + } + + _renderMatches(matches) { + if (matches.length === 0) { + return; + } + + const { + findController, + pageIdx, + textContentItemsStr, + textDivs + } = this; + const isSelectedPage = pageIdx === findController.selected.pageIdx; + const selectedMatchIdx = findController.selected.matchIdx; + const highlightAll = findController.state.highlightAll; + let prevEnd = null; + const infinity = { + divIdx: -1, + offset: undefined + }; + + function beginText(begin, className) { + const divIdx = begin.divIdx; + textDivs[divIdx].textContent = ""; + return appendTextToDiv(divIdx, 0, begin.offset, className); + } + + function appendTextToDiv(divIdx, fromOffset, toOffset, className) { + const div = textDivs[divIdx]; + const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); + const node = document.createTextNode(content); + + if (className) { + const span = document.createElement("span"); + span.className = `${className} appended`; + span.appendChild(node); + div.appendChild(span); + return className.includes("selected") ? span.offsetLeft : 0; + } + + div.appendChild(node); + return 0; + } + + let i0 = selectedMatchIdx, + i1 = i0 + 1; + + if (highlightAll) { + i0 = 0; + i1 = matches.length; + } else if (!isSelectedPage) { + return; + } + + for (let i = i0; i < i1; i++) { + const match = matches[i]; + const begin = match.begin; + const end = match.end; + const isSelected = isSelectedPage && i === selectedMatchIdx; + const highlightSuffix = isSelected ? " selected" : ""; + let selectedLeft = 0; + + if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { + if (prevEnd !== null) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + + beginText(begin); + } else { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); + } + + if (begin.divIdx === end.divIdx) { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix); + } else { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix); + + for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { + textDivs[n0].className = "highlight middle" + highlightSuffix; + } + + beginText(end, "highlight end" + highlightSuffix); + } + + prevEnd = end; + + if (isSelected) { + findController.scrollMatchIntoView({ + element: textDivs[begin.divIdx], + selectedLeft, + pageIndex: pageIdx, + matchIndex: selectedMatchIdx + }); + } + } + + if (prevEnd) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + } + + _updateMatches() { + if (!this.renderingDone) { + return; + } + + const { + findController, + matches, + pageIdx, + textContentItemsStr, + textDivs + } = this; + let clearedUntilDivIdx = -1; + + for (let i = 0, ii = matches.length; i < ii; i++) { + const match = matches[i]; + const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); + + for (let n = begin, end = match.end.divIdx; n <= end; n++) { + const div = textDivs[n]; + div.textContent = textContentItemsStr[n]; + div.className = ""; + } + + clearedUntilDivIdx = match.end.divIdx + 1; + } + + if (!findController?.highlightMatches) { + return; + } + + const pageMatches = findController.pageMatches[pageIdx] || null; + const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; + this.matches = this._convertMatches(pageMatches, pageMatchesLength); + + this._renderMatches(this.matches); + } + + _bindMouse() { + const div = this.textLayerDiv; + let expandDivsTimer = null; + div.addEventListener("mousedown", evt => { + if (this.enhanceTextSelection && this.textLayerRenderTask) { + this.textLayerRenderTask.expandTextDivs(true); + + if (expandDivsTimer) { + clearTimeout(expandDivsTimer); + expandDivsTimer = null; + } + + return; + } + + const end = div.querySelector(".endOfContent"); + + if (!end) { + return; + } + + let adjustTop = evt.target !== div; + adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; + + if (adjustTop) { + const divBounds = div.getBoundingClientRect(); + const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); + end.style.top = (r * 100).toFixed(2) + "%"; + } + + end.classList.add("active"); + }); + div.addEventListener("mouseup", () => { + if (this.enhanceTextSelection && this.textLayerRenderTask) { + expandDivsTimer = setTimeout(() => { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.expandTextDivs(false); + } + + expandDivsTimer = null; + }, EXPAND_DIVS_TIMEOUT); + return; + } + + const end = div.querySelector(".endOfContent"); + + if (!end) { + return; + } + + end.style.top = ""; + end.classList.remove("active"); + }); + } + +} + +exports.TextLayerBuilder = TextLayerBuilder; + +class DefaultTextLayerFactory { + createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) { + return new TextLayerBuilder({ + textLayerDiv, + pageIndex, + viewport, + enhanceTextSelection, + eventBus + }); + } + +} + +exports.DefaultTextLayerFactory = DefaultTextLayerFactory; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayerBuilder = exports.DefaultXfaLayerFactory = void 0; + +var _pdfjsLib = __webpack_require__(5); + +class XfaLayerBuilder { + constructor({ + pageDiv, + pdfPage, + xfaHtml, + annotationStorage + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.xfaHtml = xfaHtml; + this.annotationStorage = annotationStorage; + this.div = null; + this._cancelled = false; + } + + render(viewport, intent = "display") { + if (intent === "print") { + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfa: this.xfaHtml, + page: null, + annotationStorage: this.annotationStorage, + intent + }; + const div = document.createElement("div"); + this.pageDiv.appendChild(div); + parameters.div = div; + + _pdfjsLib.XfaLayer.render(parameters); + + return Promise.resolve(); + } + + return this.pdfPage.getXfa().then(xfa => { + if (this._cancelled) { + return; + } + + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfa, + page: this.pdfPage, + annotationStorage: this.annotationStorage, + intent + }; + + if (this.div) { + _pdfjsLib.XfaLayer.update(parameters); + } else { + this.div = document.createElement("div"); + this.pageDiv.appendChild(this.div); + parameters.div = this.div; + + _pdfjsLib.XfaLayer.render(parameters); + } + }).catch(error => { + console.error(error); + }); + } + + cancel() { + this._cancelled = true; + } + + hide() { + if (!this.div) { + return; + } + + this.div.hidden = true; + } + +} + +exports.XfaLayerBuilder = XfaLayerBuilder; + +class DefaultXfaLayerFactory { + createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null, xfaHtml = null) { + return new XfaLayerBuilder({ + pageDiv, + pdfPage, + annotationStorage, + xfaHtml + }); + } + +} + +exports.DefaultXfaLayerFactory = DefaultXfaLayerFactory; + +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SecondaryToolbar = void 0; + +var _ui_utils = __webpack_require__(4); + +var _pdf_cursor_tools = __webpack_require__(6); + +var _pdf_single_page_viewer = __webpack_require__(36); + +class SecondaryToolbar { + constructor(options, mainContainer, eventBus) { + this.toolbar = options.toolbar; + this.toggleButton = options.toggleButton; + this.toolbarButtonContainer = options.toolbarButtonContainer; + this.buttons = [{ + element: options.presentationModeButton, + eventName: "presentationmode", + close: true + }, { + element: options.openFileButton, + eventName: "openfile", + close: true + }, { + element: options.printButton, + eventName: "print", + close: true + }, { + element: options.downloadButton, + eventName: "download", + close: true + }, { + element: options.viewBookmarkButton, + eventName: null, + close: true + }, { + element: options.firstPageButton, + eventName: "firstpage", + close: true + }, { + element: options.lastPageButton, + eventName: "lastpage", + close: true + }, { + element: options.pageRotateCwButton, + eventName: "rotatecw", + close: false + }, { + element: options.pageRotateCcwButton, + eventName: "rotateccw", + close: false + }, { + element: options.cursorSelectToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _pdf_cursor_tools.CursorTool.SELECT + }, + close: true + }, { + element: options.cursorHandToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _pdf_cursor_tools.CursorTool.HAND + }, + close: true + }, { + element: options.scrollVerticalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.VERTICAL + }, + close: true + }, { + element: options.scrollHorizontalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.HORIZONTAL + }, + close: true + }, { + element: options.scrollWrappedButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.WRAPPED + }, + close: true + }, { + element: options.spreadNoneButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.NONE + }, + close: true + }, { + element: options.spreadOddButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.ODD + }, + close: true + }, { + element: options.spreadEvenButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.EVEN + }, + close: true + }, { + element: options.documentPropertiesButton, + eventName: "documentproperties", + close: true + }]; + this.items = { + firstPage: options.firstPageButton, + lastPage: options.lastPageButton, + pageRotateCw: options.pageRotateCwButton, + pageRotateCcw: options.pageRotateCcwButton + }; + this.mainContainer = mainContainer; + this.eventBus = eventBus; + this.opened = false; + this.containerHeight = null; + this.previousContainerHeight = null; + this.reset(); + + this._bindClickListeners(); + + this._bindCursorToolsListener(options); + + this._bindScrollModeListener(options); + + this._bindSpreadModeListener(options); + + this.eventBus._on("resize", this._setMaxHeight.bind(this)); + + this.eventBus._on("baseviewerinit", evt => { + if (evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer) { + this.toolbarButtonContainer.classList.add("hiddenScrollModeButtons", "hiddenSpreadModeButtons"); + } else { + this.toolbarButtonContainer.classList.remove("hiddenScrollModeButtons", "hiddenSpreadModeButtons"); + } + }); + } + + get isOpen() { + return this.opened; + } + + setPageNumber(pageNumber) { + this.pageNumber = pageNumber; + + this._updateUIState(); + } + + setPagesCount(pagesCount) { + this.pagesCount = pagesCount; + + this._updateUIState(); + } + + reset() { + this.pageNumber = 0; + this.pagesCount = 0; + + this._updateUIState(); + + this.eventBus.dispatch("secondarytoolbarreset", { + source: this + }); + } + + _updateUIState() { + this.items.firstPage.disabled = this.pageNumber <= 1; + this.items.lastPage.disabled = this.pageNumber >= this.pagesCount; + this.items.pageRotateCw.disabled = this.pagesCount === 0; + this.items.pageRotateCcw.disabled = this.pagesCount === 0; + } + + _bindClickListeners() { + this.toggleButton.addEventListener("click", this.toggle.bind(this)); + + for (const { + element, + eventName, + close, + eventDetails + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + const details = { + source: this + }; + + for (const property in eventDetails) { + details[property] = eventDetails[property]; + } + + this.eventBus.dispatch(eventName, details); + } + + if (close) { + this.close(); + } + }); + } + } + + _bindCursorToolsListener(buttons) { + this.eventBus._on("cursortoolchanged", function ({ + tool + }) { + buttons.cursorSelectToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.SELECT); + buttons.cursorHandToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.HAND); + }); + } + + _bindScrollModeListener(buttons) { + function scrollModeChanged({ + mode + }) { + buttons.scrollVerticalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.VERTICAL); + buttons.scrollHorizontalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.HORIZONTAL); + buttons.scrollWrappedButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.WRAPPED); + const isScrollModeHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL; + buttons.spreadNoneButton.disabled = isScrollModeHorizontal; + buttons.spreadOddButton.disabled = isScrollModeHorizontal; + buttons.spreadEvenButton.disabled = isScrollModeHorizontal; + } + + this.eventBus._on("scrollmodechanged", scrollModeChanged); + + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + scrollModeChanged({ + mode: _ui_utils.ScrollMode.VERTICAL + }); + } + }); + } + + _bindSpreadModeListener(buttons) { + function spreadModeChanged({ + mode + }) { + buttons.spreadNoneButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.NONE); + buttons.spreadOddButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.ODD); + buttons.spreadEvenButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.EVEN); + } + + this.eventBus._on("spreadmodechanged", spreadModeChanged); + + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + spreadModeChanged({ + mode: _ui_utils.SpreadMode.NONE + }); + } + }); + } + + open() { + if (this.opened) { + return; + } + + this.opened = true; + + this._setMaxHeight(); + + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.toolbar.classList.remove("hidden"); + } + + close() { + if (!this.opened) { + return; + } + + this.opened = false; + this.toolbar.classList.add("hidden"); + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + } + + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } + + _setMaxHeight() { + if (!this.opened) { + return; + } + + this.containerHeight = this.mainContainer.clientHeight; + + if (this.containerHeight === this.previousContainerHeight) { + return; + } + + this.toolbarButtonContainer.style.maxHeight = `${this.containerHeight - _ui_utils.SCROLLBAR_PADDING}px`; + this.previousContainerHeight = this.containerHeight; + } + +} + +exports.SecondaryToolbar = SecondaryToolbar; + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSinglePageViewer = void 0; + +var _base_viewer = __webpack_require__(28); + +var _pdfjsLib = __webpack_require__(5); + +class PDFSinglePageViewer extends _base_viewer.BaseViewer { + constructor(options) { + super(options); + + this.eventBus._on("pagesinit", evt => { + this._ensurePageViewVisible(); + }); + } + + get _viewerElement() { + return (0, _pdfjsLib.shadow)(this, "_viewerElement", this._shadowViewer); + } + + get _pageWidthScaleFactor() { + return 1; + } + + _resetView() { + super._resetView(); + + this._previousPageNumber = 1; + this._shadowViewer = document.createDocumentFragment(); + this._updateScrollDown = null; + } + + _ensurePageViewVisible() { + const pageView = this._pages[this._currentPageNumber - 1]; + const previousPageView = this._pages[this._previousPageNumber - 1]; + const viewerNodes = this.viewer.childNodes; + + switch (viewerNodes.length) { + case 0: + this.viewer.appendChild(pageView.div); + break; + + case 1: + if (viewerNodes[0] !== previousPageView.div) { + throw new Error("_ensurePageViewVisible: Unexpected previously visible page."); + } + + if (pageView === previousPageView) { + break; + } + + this._shadowViewer.appendChild(previousPageView.div); + + this.viewer.appendChild(pageView.div); + this.container.scrollTop = 0; + break; + + default: + throw new Error("_ensurePageViewVisible: Only one page should be visible at a time."); + } + + this._previousPageNumber = this._currentPageNumber; + } + + _scrollUpdate() { + if (this._updateScrollDown) { + this._updateScrollDown(); + } + + super._scrollUpdate(); + } + + _scrollIntoView({ + pageDiv, + pageSpot = null, + pageNumber = null + }) { + if (pageNumber) { + this._setCurrentPageNumber(pageNumber); + } + + const scrolledDown = this._currentPageNumber >= this._previousPageNumber; + + this._ensurePageViewVisible(); + + this.update(); + + super._scrollIntoView({ + pageDiv, + pageSpot, + pageNumber + }); + + this._updateScrollDown = () => { + this.scroll.down = scrolledDown; + this._updateScrollDown = null; + }; + } + + _getVisiblePages() { + return this._getCurrentVisiblePage(); + } + + _updateHelper(visiblePages) {} + + get _isScrollModeHorizontal() { + return (0, _pdfjsLib.shadow)(this, "_isScrollModeHorizontal", false); + } + + _updateScrollMode() {} + + _updateSpreadMode() {} + + _getPageAdvance() { + return 1; + } + +} + +exports.PDFSinglePageViewer = PDFSinglePageViewer; + +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Toolbar = void 0; + +var _ui_utils = __webpack_require__(4); + +const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading"; +const SCALE_SELECT_CONTAINER_WIDTH = 140; +const SCALE_SELECT_WIDTH = 162; + +class Toolbar { + constructor(options, eventBus, l10n) { + this.toolbar = options.container; + this.eventBus = eventBus; + this.l10n = l10n; + this.buttons = [{ + element: options.previous, + eventName: "previouspage" + }, { + element: options.next, + eventName: "nextpage" + }, { + element: options.zoomIn, + eventName: "zoomin" + }, { + element: options.zoomOut, + eventName: "zoomout" + }, { + element: options.openFile, + eventName: "openfile" + }, { + element: options.print, + eventName: "print" + }, { + element: options.presentationModeButton, + eventName: "presentationmode" + }, { + element: options.download, + eventName: "download" + }, { + element: options.viewBookmark, + eventName: null + }]; + this.items = { + numPages: options.numPages, + pageNumber: options.pageNumber, + scaleSelectContainer: options.scaleSelectContainer, + scaleSelect: options.scaleSelect, + customScaleOption: options.customScaleOption, + previous: options.previous, + next: options.next, + zoomIn: options.zoomIn, + zoomOut: options.zoomOut + }; + this._wasLocalized = false; + this.reset(); + + this._bindListeners(); + } + + setPageNumber(pageNumber, pageLabel) { + this.pageNumber = pageNumber; + this.pageLabel = pageLabel; + + this._updateUIState(false); + } + + setPagesCount(pagesCount, hasPageLabels) { + this.pagesCount = pagesCount; + this.hasPageLabels = hasPageLabels; + + this._updateUIState(true); + } + + setPageScale(pageScaleValue, pageScale) { + this.pageScaleValue = (pageScaleValue || pageScale).toString(); + this.pageScale = pageScale; + + this._updateUIState(false); + } + + reset() { + this.pageNumber = 0; + this.pageLabel = null; + this.hasPageLabels = false; + this.pagesCount = 0; + this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + this.pageScale = _ui_utils.DEFAULT_SCALE; + + this._updateUIState(true); + + this.updateLoadingIndicatorState(); + } + + _bindListeners() { + const { + pageNumber, + scaleSelect + } = this.items; + const self = this; + + for (const { + element, + eventName + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + this.eventBus.dispatch(eventName, { + source: this + }); + } + }); + } + + pageNumber.addEventListener("click", function () { + this.select(); + }); + pageNumber.addEventListener("change", function () { + self.eventBus.dispatch("pagenumberchanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("change", function () { + if (this.value === "custom") { + return; + } + + self.eventBus.dispatch("scalechanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("click", function (evt) { + const target = evt.target; + + if (this.value === self.pageScaleValue && target.tagName.toUpperCase() === "OPTION") { + this.blur(); + } + }); + scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; + + this.eventBus._on("localized", () => { + this._wasLocalized = true; + + this._adjustScaleWidth(); + + this._updateUIState(true); + }); + } + + _updateUIState(resetNumPages = false) { + if (!this._wasLocalized) { + return; + } + + const { + pageNumber, + pagesCount, + pageScaleValue, + pageScale, + items + } = this; + + if (resetNumPages) { + if (this.hasPageLabels) { + items.pageNumber.type = "text"; + } else { + items.pageNumber.type = "number"; + this.l10n.get("of_pages", { + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } + + items.pageNumber.max = pagesCount; + } + + if (this.hasPageLabels) { + items.pageNumber.value = this.pageLabel; + this.l10n.get("page_of_pages", { + pageNumber, + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } else { + items.pageNumber.value = pageNumber; + } + + items.previous.disabled = pageNumber <= 1; + items.next.disabled = pageNumber >= pagesCount; + items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE; + items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE; + this.l10n.get("page_scale_percent", { + scale: Math.round(pageScale * 10000) / 100 + }).then(msg => { + let predefinedValueFound = false; + + for (const option of items.scaleSelect.options) { + if (option.value !== pageScaleValue) { + option.selected = false; + continue; + } + + option.selected = true; + predefinedValueFound = true; + } + + if (!predefinedValueFound) { + items.customScaleOption.textContent = msg; + items.customScaleOption.selected = true; + } + }); + } + + updateLoadingIndicatorState(loading = false) { + const pageNumberInput = this.items.pageNumber; + pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading); + } + + async _adjustScaleWidth() { + const { + items, + l10n + } = this; + const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]); + let canvas = document.createElement("canvas"); + canvas.mozOpaque = true; + let ctx = canvas.getContext("2d", { + alpha: false + }); + await _ui_utils.animationStarted; + const { + fontSize, + fontFamily + } = getComputedStyle(items.scaleSelect); + ctx.font = `${fontSize} ${fontFamily}`; + let maxWidth = 0; + + for (const predefinedValue of await predefinedValuesPromise) { + const { + width + } = ctx.measureText(predefinedValue); + + if (width > maxWidth) { + maxWidth = width; + } + } + + const overflow = SCALE_SELECT_WIDTH - SCALE_SELECT_CONTAINER_WIDTH; + maxWidth += 2 * overflow; + + if (maxWidth > SCALE_SELECT_CONTAINER_WIDTH) { + items.scaleSelect.style.width = `${maxWidth + overflow}px`; + items.scaleSelectContainer.style.width = `${maxWidth}px`; + } + + canvas.width = 0; + canvas.height = 0; + canvas = ctx = null; + } + +} + +exports.Toolbar = Toolbar; + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ViewHistory = void 0; +const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; + +class ViewHistory { + constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) { + this.fingerprint = fingerprint; + this.cacheSize = cacheSize; + this._initializedPromise = this._readFromStorage().then(databaseStr => { + const database = JSON.parse(databaseStr || "{}"); + let index = -1; + + if (!Array.isArray(database.files)) { + database.files = []; + } else { + while (database.files.length >= this.cacheSize) { + database.files.shift(); + } + + for (let i = 0, ii = database.files.length; i < ii; i++) { + const branch = database.files[i]; + + if (branch.fingerprint === this.fingerprint) { + index = i; + break; + } + } + } + + if (index === -1) { + index = database.files.push({ + fingerprint: this.fingerprint + }) - 1; + } + + this.file = database.files[index]; + this.database = database; + }); + } + + async _writeToStorage() { + const databaseStr = JSON.stringify(this.database); + localStorage.setItem("pdfjs.history", databaseStr); + } + + async _readFromStorage() { + return localStorage.getItem("pdfjs.history"); + } + + async set(name, val) { + await this._initializedPromise; + this.file[name] = val; + return this._writeToStorage(); + } + + async setMultiple(properties) { + await this._initializedPromise; + + for (const name in properties) { + this.file[name] = properties[name]; + } + + return this._writeToStorage(); + } + + async get(name, defaultValue) { + await this._initializedPromise; + const val = this.file[name]; + return val !== undefined ? val : defaultValue; + } + + async getMultiple(properties) { + await this._initializedPromise; + const values = Object.create(null); + + for (const name in properties) { + const val = this.file[name]; + values[name] = val !== undefined ? val : properties[name]; + } + + return values; + } + +} + +exports.ViewHistory = ViewHistory; + +/***/ }), +/* 39 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericCom = void 0; + +var _app = __webpack_require__(3); + +var _preferences = __webpack_require__(40); + +var _download_manager = __webpack_require__(41); + +var _genericl10n = __webpack_require__(42); + +var _generic_scripting = __webpack_require__(44); + +; +const GenericCom = {}; +exports.GenericCom = GenericCom; + +class GenericPreferences extends _preferences.BasePreferences { + async _writeToStorage(prefObj) { + localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj)); + } + + async _readFromStorage(prefObj) { + return JSON.parse(localStorage.getItem("pdfjs.preferences")); + } + +} + +class GenericExternalServices extends _app.DefaultExternalServices { + static createDownloadManager(options) { + return new _download_manager.DownloadManager(); + } + + static createPreferences() { + return new GenericPreferences(); + } + + static createL10n({ + locale = "en-US" + }) { + return new _genericl10n.GenericL10n(locale); + } + + static createScripting({ + sandboxBundleSrc + }) { + return new _generic_scripting.GenericScripting(sandboxBundleSrc); + } + +} + +_app.PDFViewerApplication.externalServices = GenericExternalServices; + +/***/ }), +/* 40 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BasePreferences = void 0; + +var _app_options = __webpack_require__(1); + +class BasePreferences { + constructor() { + if (this.constructor === BasePreferences) { + throw new Error("Cannot initialize BasePreferences."); + } + + Object.defineProperty(this, "defaults", { + value: Object.freeze({ + "cursorToolOnLoad": 0, + "defaultZoomValue": "", + "disablePageLabels": false, + "enablePermissions": false, + "enablePrintAutoRotate": true, + "enableScripting": true, + "externalLinkTarget": 0, + "historyUpdateUrl": false, + "ignoreDestinationZoom": false, + "pdfBugEnabled": false, + "renderer": "canvas", + "renderInteractiveForms": true, + "sidebarViewOnLoad": -1, + "scrollModeOnLoad": -1, + "spreadModeOnLoad": -1, + "textLayerMode": 1, + "useOnlyCssZoom": false, + "viewerCssTheme": 0, + "viewOnLoad": 0, + "disableAutoFetch": false, + "disableFontFace": false, + "disableRange": false, + "disableStream": false, + "enableXfa": false + }), + writable: false, + enumerable: true, + configurable: false + }); + this.prefs = Object.create(null); + this._initializedPromise = this._readFromStorage(this.defaults).then(prefs => { + for (const name in this.defaults) { + const prefValue = prefs?.[name]; + + if (typeof prefValue === typeof this.defaults[name]) { + this.prefs[name] = prefValue; + } + } + }); + } + + async _writeToStorage(prefObj) { + throw new Error("Not implemented: _writeToStorage"); + } + + async _readFromStorage(prefObj) { + throw new Error("Not implemented: _readFromStorage"); + } + + async reset() { + await this._initializedPromise; + this.prefs = Object.create(null); + return this._writeToStorage(this.defaults); + } + + async set(name, value) { + await this._initializedPromise; + const defaultValue = this.defaults[name]; + + if (defaultValue === undefined) { + throw new Error(`Set preference: "${name}" is undefined.`); + } else if (value === undefined) { + throw new Error("Set preference: no value is specified."); + } + + const valueType = typeof value; + const defaultType = typeof defaultValue; + + if (valueType !== defaultType) { + if (valueType === "number" && defaultType === "string") { + value = value.toString(); + } else { + throw new Error(`Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.`); + } + } else { + if (valueType === "number" && !Number.isInteger(value)) { + throw new Error(`Set preference: "${value}" must be an integer.`); + } + } + + this.prefs[name] = value; + return this._writeToStorage(this.prefs); + } + + async get(name) { + await this._initializedPromise; + const defaultValue = this.defaults[name], + prefValue = this.prefs[name]; + + if (defaultValue === undefined) { + throw new Error(`Get preference: "${name}" is undefined.`); + } + + return prefValue !== undefined ? prefValue : defaultValue; + } + + async getAll() { + await this._initializedPromise; + const obj = Object.create(null); + + for (const name in this.defaults) { + const prefValue = this.prefs[name]; + obj[name] = prefValue !== undefined ? prefValue : this.defaults[name]; + } + + return obj; + } + +} + +exports.BasePreferences = BasePreferences; + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DownloadManager = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _viewer_compatibility = __webpack_require__(2); + +; + +function download(blobUrl, filename) { + const a = document.createElement("a"); + + if (!a.click) { + throw new Error('DownloadManager: "a.click()" is not supported.'); + } + + a.href = blobUrl; + a.target = "_parent"; + + if ("download" in a) { + a.download = filename; + } + + (document.body || document.documentElement).appendChild(a); + a.click(); + a.remove(); +} + +class DownloadManager { + constructor() { + this._openBlobUrls = new WeakMap(); + } + + downloadUrl(url, filename) { + if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { + return; + } + + download(url + "#pdfjs.action=download", filename); + } + + downloadData(data, filename, contentType) { + const blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL); + download(blobUrl, filename); + } + + openOrDownloadData(element, data, filename) { + const isPdfData = (0, _pdfjsLib.isPdfFile)(filename); + const contentType = isPdfData ? "application/pdf" : ""; + + if (isPdfData && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { + let blobUrl = this._openBlobUrls.get(element); + + if (!blobUrl) { + blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + + this._openBlobUrls.set(element, blobUrl); + } + + let viewerUrl; + viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); + + try { + window.open(viewerUrl); + return true; + } catch (ex) { + console.error(`openOrDownloadData: ${ex}`); + URL.revokeObjectURL(blobUrl); + + this._openBlobUrls.delete(element); + } + } + + this.downloadData(data, filename, contentType); + return false; + } + + download(blob, url, filename, sourceEventType = "download") { + if (_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { + this.downloadUrl(url, filename); + return; + } + + const blobUrl = URL.createObjectURL(blob); + download(blobUrl, filename); + } + +} + +exports.DownloadManager = DownloadManager; + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericL10n = void 0; + +__webpack_require__(43); + +var _l10n_utils = __webpack_require__(30); + +const webL10n = document.webL10n; + +class GenericL10n { + constructor(lang) { + this._lang = lang; + this._ready = new Promise((resolve, reject) => { + webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => { + resolve(webL10n); + }); + }); + } + + async getLanguage() { + const l10n = await this._ready; + return l10n.getLanguage(); + } + + async getDirection() { + const l10n = await this._ready; + return l10n.getDirection(); + } + + async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) { + const l10n = await this._ready; + return l10n.get(key, args, fallback); + } + + async translate(element) { + const l10n = await this._ready; + return l10n.translate(element); + } + +} + +exports.GenericL10n = GenericL10n; + +/***/ }), +/* 43 */ +/***/ (() => { + + + +document.webL10n = function (window, document, undefined) { + var gL10nData = {}; + var gTextData = ''; + var gTextProp = 'textContent'; + var gLanguage = ''; + var gMacros = {}; + var gReadyState = 'loading'; + var gAsyncResourceLoading = true; + + function getL10nResourceLinks() { + return document.querySelectorAll('link[type="application/l10n"]'); + } + + function getL10nDictionary() { + var script = document.querySelector('script[type="application/l10n"]'); + return script ? JSON.parse(script.innerHTML) : null; + } + + function getTranslatableChildren(element) { + return element ? element.querySelectorAll('*[data-l10n-id]') : []; + } + + function getL10nAttributes(element) { + if (!element) return {}; + var l10nId = element.getAttribute('data-l10n-id'); + var l10nArgs = element.getAttribute('data-l10n-args'); + var args = {}; + + if (l10nArgs) { + try { + args = JSON.parse(l10nArgs); + } catch (e) { + console.warn('could not parse arguments for #' + l10nId); + } + } + + return { + id: l10nId, + args: args + }; + } + + function xhrLoadText(url, onSuccess, onFailure) { + onSuccess = onSuccess || function _onSuccess(data) {}; + + onFailure = onFailure || function _onFailure() {}; + + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, gAsyncResourceLoading); + + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=utf-8'); + } + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + if (xhr.status == 200 || xhr.status === 0) { + onSuccess(xhr.responseText); + } else { + onFailure(); + } + } + }; + + xhr.onerror = onFailure; + xhr.ontimeout = onFailure; + + try { + xhr.send(null); + } catch (e) { + onFailure(); + } + } + + function parseResource(href, lang, successCallback, failureCallback) { + var baseURL = href.replace(/[^\/]*$/, '') || './'; + + function evalString(text) { + if (text.lastIndexOf('\\') < 0) return text; + return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); + } + + function parseProperties(text, parsedPropertiesCallback) { + var dictionary = {}; + var reBlank = /^\s*|\s*$/; + var reComment = /^\s*#|^\s*$/; + var reSection = /^\s*\[(.*)\]\s*$/; + var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; + var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; + + function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { + var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); + var currentLang = '*'; + var genericLang = lang.split('-', 1)[0]; + var skipLang = false; + var match = ''; + + function nextEntry() { + while (true) { + if (!entries.length) { + parsedRawLinesCallback(); + return; + } + + var line = entries.shift(); + if (reComment.test(line)) continue; + + if (extendedSyntax) { + match = reSection.exec(line); + + if (match) { + currentLang = match[1].toLowerCase(); + skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; + continue; + } else if (skipLang) { + continue; + } + + match = reImport.exec(line); + + if (match) { + loadImport(baseURL + match[1], nextEntry); + return; + } + } + + var tmp = line.match(reSplit); + + if (tmp && tmp.length == 3) { + dictionary[tmp[1]] = evalString(tmp[2]); + } + } + } + + nextEntry(); + } + + function loadImport(url, callback) { + xhrLoadText(url, function (content) { + parseRawLines(content, false, callback); + }, function () { + console.warn(url + ' not found.'); + callback(); + }); + } + + parseRawLines(text, true, function () { + parsedPropertiesCallback(dictionary); + }); + } + + xhrLoadText(href, function (response) { + gTextData += response; + parseProperties(response, function (data) { + for (var key in data) { + var id, + prop, + index = key.lastIndexOf('.'); + + if (index > 0) { + id = key.substring(0, index); + prop = key.substring(index + 1); + } else { + id = key; + prop = gTextProp; + } + + if (!gL10nData[id]) { + gL10nData[id] = {}; + } + + gL10nData[id][prop] = data[key]; + } + + if (successCallback) { + successCallback(); + } + }); + }, failureCallback); + } + + function loadLocale(lang, callback) { + if (lang) { + lang = lang.toLowerCase(); + } + + callback = callback || function _callback() {}; + + clear(); + gLanguage = lang; + var langLinks = getL10nResourceLinks(); + var langCount = langLinks.length; + + if (langCount === 0) { + var dict = getL10nDictionary(); + + if (dict && dict.locales && dict.default_locale) { + console.log('using the embedded JSON directory, early way out'); + gL10nData = dict.locales[lang]; + + if (!gL10nData) { + var defaultLocale = dict.default_locale.toLowerCase(); + + for (var anyCaseLang in dict.locales) { + anyCaseLang = anyCaseLang.toLowerCase(); + + if (anyCaseLang === lang) { + gL10nData = dict.locales[lang]; + break; + } else if (anyCaseLang === defaultLocale) { + gL10nData = dict.locales[defaultLocale]; + } + } + } + + callback(); + } else { + console.log('no resource to load, early way out'); + } + + gReadyState = 'complete'; + return; + } + + var onResourceLoaded = null; + var gResourceCount = 0; + + onResourceLoaded = function () { + gResourceCount++; + + if (gResourceCount >= langCount) { + callback(); + gReadyState = 'complete'; + } + }; + + function L10nResourceLink(link) { + var href = link.href; + + this.load = function (lang, callback) { + parseResource(href, lang, callback, function () { + console.warn(href + ' not found.'); + console.warn('"' + lang + '" resource not found'); + gLanguage = ''; + callback(); + }); + }; + } + + for (var i = 0; i < langCount; i++) { + var resource = new L10nResourceLink(langLinks[i]); + resource.load(lang, onResourceLoaded); + } + } + + function clear() { + gL10nData = {}; + gTextData = ''; + gLanguage = ''; + } + + function getPluralRules(lang) { + var locales2rules = { + 'af': 3, + 'ak': 4, + 'am': 4, + 'ar': 1, + 'asa': 3, + 'az': 0, + 'be': 11, + 'bem': 3, + 'bez': 3, + 'bg': 3, + 'bh': 4, + 'bm': 0, + 'bn': 3, + 'bo': 0, + 'br': 20, + 'brx': 3, + 'bs': 11, + 'ca': 3, + 'cgg': 3, + 'chr': 3, + 'cs': 12, + 'cy': 17, + 'da': 3, + 'de': 3, + 'dv': 3, + 'dz': 0, + 'ee': 3, + 'el': 3, + 'en': 3, + 'eo': 3, + 'es': 3, + 'et': 3, + 'eu': 3, + 'fa': 0, + 'ff': 5, + 'fi': 3, + 'fil': 4, + 'fo': 3, + 'fr': 5, + 'fur': 3, + 'fy': 3, + 'ga': 8, + 'gd': 24, + 'gl': 3, + 'gsw': 3, + 'gu': 3, + 'guw': 4, + 'gv': 23, + 'ha': 3, + 'haw': 3, + 'he': 2, + 'hi': 4, + 'hr': 11, + 'hu': 0, + 'id': 0, + 'ig': 0, + 'ii': 0, + 'is': 3, + 'it': 3, + 'iu': 7, + 'ja': 0, + 'jmc': 3, + 'jv': 0, + 'ka': 0, + 'kab': 5, + 'kaj': 3, + 'kcg': 3, + 'kde': 0, + 'kea': 0, + 'kk': 3, + 'kl': 3, + 'km': 0, + 'kn': 0, + 'ko': 0, + 'ksb': 3, + 'ksh': 21, + 'ku': 3, + 'kw': 7, + 'lag': 18, + 'lb': 3, + 'lg': 3, + 'ln': 4, + 'lo': 0, + 'lt': 10, + 'lv': 6, + 'mas': 3, + 'mg': 4, + 'mk': 16, + 'ml': 3, + 'mn': 3, + 'mo': 9, + 'mr': 3, + 'ms': 0, + 'mt': 15, + 'my': 0, + 'nah': 3, + 'naq': 7, + 'nb': 3, + 'nd': 3, + 'ne': 3, + 'nl': 3, + 'nn': 3, + 'no': 3, + 'nr': 3, + 'nso': 4, + 'ny': 3, + 'nyn': 3, + 'om': 3, + 'or': 3, + 'pa': 3, + 'pap': 3, + 'pl': 13, + 'ps': 3, + 'pt': 3, + 'rm': 3, + 'ro': 9, + 'rof': 3, + 'ru': 11, + 'rwk': 3, + 'sah': 0, + 'saq': 3, + 'se': 7, + 'seh': 3, + 'ses': 0, + 'sg': 0, + 'sh': 11, + 'shi': 19, + 'sk': 12, + 'sl': 14, + 'sma': 7, + 'smi': 7, + 'smj': 7, + 'smn': 7, + 'sms': 7, + 'sn': 3, + 'so': 3, + 'sq': 3, + 'sr': 11, + 'ss': 3, + 'ssy': 3, + 'st': 3, + 'sv': 3, + 'sw': 3, + 'syr': 3, + 'ta': 3, + 'te': 3, + 'teo': 3, + 'th': 0, + 'ti': 4, + 'tig': 3, + 'tk': 3, + 'tl': 4, + 'tn': 3, + 'to': 0, + 'tr': 0, + 'ts': 3, + 'tzm': 22, + 'uk': 11, + 'ur': 3, + 've': 3, + 'vi': 0, + 'vun': 3, + 'wa': 4, + 'wae': 3, + 'wo': 0, + 'xh': 3, + 'xog': 3, + 'yo': 0, + 'zh': 0, + 'zu': 3 + }; + + function isIn(n, list) { + return list.indexOf(n) !== -1; + } + + function isBetween(n, start, end) { + return start <= n && n <= end; + } + + var pluralRules = { + '0': function (n) { + return 'other'; + }, + '1': function (n) { + if (isBetween(n % 100, 3, 10)) return 'few'; + if (n === 0) return 'zero'; + if (isBetween(n % 100, 11, 99)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '2': function (n) { + if (n !== 0 && n % 10 === 0) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '3': function (n) { + if (n == 1) return 'one'; + return 'other'; + }, + '4': function (n) { + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '5': function (n) { + if (isBetween(n, 0, 2) && n != 2) return 'one'; + return 'other'; + }, + '6': function (n) { + if (n === 0) return 'zero'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '7': function (n) { + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '8': function (n) { + if (isBetween(n, 3, 6)) return 'few'; + if (isBetween(n, 7, 10)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '9': function (n) { + if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '10': function (n) { + if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few'; + if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one'; + return 'other'; + }, + '11': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '12': function (n) { + if (isBetween(n, 2, 4)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '13': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '14': function (n) { + if (isBetween(n % 100, 3, 4)) return 'few'; + if (n % 100 == 2) return 'two'; + if (n % 100 == 1) return 'one'; + return 'other'; + }, + '15': function (n) { + if (n === 0 || isBetween(n % 100, 2, 10)) return 'few'; + if (isBetween(n % 100, 11, 19)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '16': function (n) { + if (n % 10 == 1 && n != 11) return 'one'; + return 'other'; + }, + '17': function (n) { + if (n == 3) return 'few'; + if (n === 0) return 'zero'; + if (n == 6) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '18': function (n) { + if (n === 0) return 'zero'; + if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one'; + return 'other'; + }, + '19': function (n) { + if (isBetween(n, 2, 10)) return 'few'; + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '20': function (n) { + if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few'; + if (n % 1000000 === 0 && n !== 0) return 'many'; + if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two'; + if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one'; + return 'other'; + }, + '21': function (n) { + if (n === 0) return 'zero'; + if (n == 1) return 'one'; + return 'other'; + }, + '22': function (n) { + if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one'; + return 'other'; + }, + '23': function (n) { + if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one'; + return 'other'; + }, + '24': function (n) { + if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few'; + if (isIn(n, [2, 12])) return 'two'; + if (isIn(n, [1, 11])) return 'one'; + return 'other'; + } + }; + var index = locales2rules[lang.replace(/-.*$/, '')]; + + if (!(index in pluralRules)) { + console.warn('plural form unknown for [' + lang + ']'); + return function () { + return 'other'; + }; + } + + return pluralRules[index]; + } + + gMacros.plural = function (str, param, key, prop) { + var n = parseFloat(param); + if (isNaN(n)) return str; + if (prop != gTextProp) return str; + + if (!gMacros._pluralRules) { + gMacros._pluralRules = getPluralRules(gLanguage); + } + + var index = '[' + gMacros._pluralRules(n) + ']'; + + if (n === 0 && key + '[zero]' in gL10nData) { + str = gL10nData[key + '[zero]'][prop]; + } else if (n == 1 && key + '[one]' in gL10nData) { + str = gL10nData[key + '[one]'][prop]; + } else if (n == 2 && key + '[two]' in gL10nData) { + str = gL10nData[key + '[two]'][prop]; + } else if (key + index in gL10nData) { + str = gL10nData[key + index][prop]; + } else if (key + '[other]' in gL10nData) { + str = gL10nData[key + '[other]'][prop]; + } + + return str; + }; + + function getL10nData(key, args, fallback) { + var data = gL10nData[key]; + + if (!data) { + console.warn('#' + key + ' is undefined.'); + + if (!fallback) { + return null; + } + + data = fallback; + } + + var rv = {}; + + for (var prop in data) { + var str = data[prop]; + str = substIndexes(str, args, key, prop); + str = substArguments(str, args, key); + rv[prop] = str; + } + + return rv; + } + + function substIndexes(str, args, key, prop) { + var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; + var reMatch = reIndex.exec(str); + if (!reMatch || !reMatch.length) return str; + var macroName = reMatch[1]; + var paramName = reMatch[2]; + var param; + + if (args && paramName in args) { + param = args[paramName]; + } else if (paramName in gL10nData) { + param = gL10nData[paramName]; + } + + if (macroName in gMacros) { + var macro = gMacros[macroName]; + str = macro(str, param, key, prop); + } + + return str; + } + + function substArguments(str, args, key) { + var reArgs = /\{\{\s*(.+?)\s*\}\}/g; + return str.replace(reArgs, function (matched_text, arg) { + if (args && arg in args) { + return args[arg]; + } + + if (arg in gL10nData) { + return gL10nData[arg]; + } + + console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); + return matched_text; + }); + } + + function translateElement(element) { + var l10n = getL10nAttributes(element); + if (!l10n.id) return; + var data = getL10nData(l10n.id, l10n.args); + + if (!data) { + console.warn('#' + l10n.id + ' is undefined.'); + return; + } + + if (data[gTextProp]) { + if (getChildElementCount(element) === 0) { + element[gTextProp] = data[gTextProp]; + } else { + var children = element.childNodes; + var found = false; + + for (var i = 0, l = children.length; i < l; i++) { + if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { + if (found) { + children[i].nodeValue = ''; + } else { + children[i].nodeValue = data[gTextProp]; + found = true; + } + } + } + + if (!found) { + var textNode = document.createTextNode(data[gTextProp]); + element.insertBefore(textNode, element.firstChild); + } + } + + delete data[gTextProp]; + } + + for (var k in data) { + element[k] = data[k]; + } + } + + function getChildElementCount(element) { + if (element.children) { + return element.children.length; + } + + if (typeof element.childElementCount !== 'undefined') { + return element.childElementCount; + } + + var count = 0; + + for (var i = 0; i < element.childNodes.length; i++) { + count += element.nodeType === 1 ? 1 : 0; + } + + return count; + } + + function translateFragment(element) { + element = element || document.documentElement; + var children = getTranslatableChildren(element); + var elementCount = children.length; + + for (var i = 0; i < elementCount; i++) { + translateElement(children[i]); + } + + translateElement(element); + } + + return { + get: function (key, args, fallbackString) { + var index = key.lastIndexOf('.'); + var prop = gTextProp; + + if (index > 0) { + prop = key.substring(index + 1); + key = key.substring(0, index); + } + + var fallback; + + if (fallbackString) { + fallback = {}; + fallback[prop] = fallbackString; + } + + var data = getL10nData(key, args, fallback); + + if (data && prop in data) { + return data[prop]; + } + + return '{{' + key + '}}'; + }, + getData: function () { + return gL10nData; + }, + getText: function () { + return gTextData; + }, + getLanguage: function () { + return gLanguage; + }, + setLanguage: function (lang, callback) { + loadLocale(lang, function () { + if (callback) callback(); + }); + }, + getDirection: function () { + var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; + var shortCode = gLanguage.split('-', 1)[0]; + return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr'; + }, + translate: translateFragment, + getReadyState: function () { + return gReadyState; + }, + ready: function (callback) { + if (!callback) { + return; + } else if (gReadyState == 'complete' || gReadyState == 'interactive') { + window.setTimeout(function () { + callback(); + }); + } else if (document.addEventListener) { + document.addEventListener('localized', function once() { + document.removeEventListener('localized', once); + callback(); + }); + } + } + }; +}(window, document); + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.docPropertiesLookup = docPropertiesLookup; +exports.GenericScripting = void 0; + +var _pdfjsLib = __webpack_require__(5); + +async function docPropertiesLookup(pdfDocument) { + const url = "", + baseUrl = url.split("#")[0]; + let { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + + if (!contentLength) { + const { + length + } = await pdfDocument.getDownloadInfo(); + contentLength = length; + } + + return { ...info, + baseURL: baseUrl, + filesize: contentLength, + filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url), + metadata: metadata?.getRaw(), + authors: metadata?.get("dc:creator"), + numPages: pdfDocument.numPages, + URL: url + }; +} + +class GenericScripting { + constructor(sandboxBundleSrc) { + this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => { + return window.pdfjsSandbox.QuickJSSandbox(); + }); + } + + async createSandbox(data) { + const sandbox = await this._ready; + sandbox.create(data); + } + + async dispatchEventInSandbox(event) { + const sandbox = await this._ready; + sandbox.dispatchEvent(event); + } + + async destroySandbox() { + const sandbox = await this._ready; + sandbox.nukeSandbox(); + } + +} + +exports.GenericScripting = GenericScripting; + +/***/ }), +/* 45 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPrintService = PDFPrintService; + +var _app = __webpack_require__(3); + +var _print_utils = __webpack_require__(46); + +var _viewer_compatibility = __webpack_require__(2); + +let activeService = null; +let overlayManager = null; + +function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise) { + const scratchCanvas = activeService.scratchCanvas; + const PRINT_UNITS = printResolution / 72.0; + scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); + scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); + const ctx = scratchCanvas.getContext("2d"); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); + ctx.restore(); + return pdfDocument.getPage(pageNumber).then(function (pdfPage) { + const renderContext = { + canvasContext: ctx, + transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], + viewport: pdfPage.getViewport({ + scale: 1, + rotation: size.rotation + }), + intent: "print", + includeAnnotationStorage: true, + optionalContentConfigPromise + }; + return pdfPage.render(renderContext).promise; + }); +} + +function PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise = null, l10n) { + this.pdfDocument = pdfDocument; + this.pagesOverview = pagesOverview; + this.printContainer = printContainer; + this._printResolution = printResolution || 150; + this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig(); + this.l10n = l10n; + this.currentPage = -1; + this.scratchCanvas = document.createElement("canvas"); +} + +PDFPrintService.prototype = { + layout() { + this.throwIfInactive(); + const body = document.querySelector("body"); + body.setAttribute("data-pdfjsprinting", true); + const hasEqualPageSizes = this.pagesOverview.every(function (size) { + return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height; + }, this); + + if (!hasEqualPageSizes) { + console.warn("Not all pages have the same size. The printed " + "result may be incorrect!"); + } + + this.pageStyleSheet = document.createElement("style"); + const pageSize = this.pagesOverview[0]; + this.pageStyleSheet.textContent = "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}"; + body.appendChild(this.pageStyleSheet); + }, + + destroy() { + if (activeService !== this) { + return; + } + + this.printContainer.textContent = ""; + const body = document.querySelector("body"); + body.removeAttribute("data-pdfjsprinting"); + + if (this.pageStyleSheet) { + this.pageStyleSheet.remove(); + this.pageStyleSheet = null; + } + + this.scratchCanvas.width = this.scratchCanvas.height = 0; + this.scratchCanvas = null; + activeService = null; + ensureOverlay().then(function () { + if (overlayManager.active !== "printServiceOverlay") { + return; + } + + overlayManager.close("printServiceOverlay"); + }); + }, + + renderPages() { + if (this.pdfDocument.isPureXfa) { + (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument); + return Promise.resolve(); + } + + const pageCount = this.pagesOverview.length; + + const renderNextPage = (resolve, reject) => { + this.throwIfInactive(); + + if (++this.currentPage >= pageCount) { + renderProgress(pageCount, pageCount, this.l10n); + resolve(); + return; + } + + const index = this.currentPage; + renderProgress(index, pageCount, this.l10n); + renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index], this._printResolution, this._optionalContentConfigPromise).then(this.useRenderedPage.bind(this)).then(function () { + renderNextPage(resolve, reject); + }, reject); + }; + + return new Promise(renderNextPage); + }, + + useRenderedPage() { + this.throwIfInactive(); + const img = document.createElement("img"); + const scratchCanvas = this.scratchCanvas; + + if ("toBlob" in scratchCanvas && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { + scratchCanvas.toBlob(function (blob) { + img.src = URL.createObjectURL(blob); + }); + } else { + img.src = scratchCanvas.toDataURL(); + } + + const wrapper = document.createElement("div"); + wrapper.className = "printedPage"; + wrapper.appendChild(img); + this.printContainer.appendChild(wrapper); + return new Promise(function (resolve, reject) { + img.onload = resolve; + img.onerror = reject; + }); + }, + + performPrint() { + this.throwIfInactive(); + return new Promise(resolve => { + setTimeout(() => { + if (!this.active) { + resolve(); + return; + } + + print.call(window); + setTimeout(resolve, 20); + }, 0); + }); + }, + + get active() { + return this === activeService; + }, + + throwIfInactive() { + if (!this.active) { + throw new Error("This print request was cancelled or completed."); + } + } + +}; +const print = window.print; + +window.print = function () { + if (activeService) { + console.warn("Ignored window.print() because of a pending print job."); + return; + } + + ensureOverlay().then(function () { + if (activeService) { + overlayManager.open("printServiceOverlay"); + } + }); + + try { + dispatchEvent("beforeprint"); + } finally { + if (!activeService) { + console.error("Expected print service to be initialized."); + ensureOverlay().then(function () { + if (overlayManager.active === "printServiceOverlay") { + overlayManager.close("printServiceOverlay"); + } + }); + return; + } + + const activeServiceOnEntry = activeService; + activeService.renderPages().then(function () { + return activeServiceOnEntry.performPrint(); + }).catch(function () {}).then(function () { + if (activeServiceOnEntry.active) { + abort(); + } + }); + } +}; + +function dispatchEvent(eventType) { + const event = document.createEvent("CustomEvent"); + event.initCustomEvent(eventType, false, false, "custom"); + window.dispatchEvent(event); +} + +function abort() { + if (activeService) { + activeService.destroy(); + dispatchEvent("afterprint"); + } +} + +function renderProgress(index, total, l10n) { + const progressContainer = document.getElementById("printServiceOverlay"); + const progress = Math.round(100 * index / total); + const progressBar = progressContainer.querySelector("progress"); + const progressPerc = progressContainer.querySelector(".relative-progress"); + progressBar.value = progress; + l10n.get("print_progress_percent", { + progress + }).then(msg => { + progressPerc.textContent = msg; + }); +} + +window.addEventListener("keydown", function (event) { + if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { + // window.print(); + event.preventDefault(); + + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + event.stopPropagation(); + } + } +}, true); + +if ("onbeforeprint" in window) { + const stopPropagationIfNeeded = function (event) { + if (event.detail !== "custom" && event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } + }; + + window.addEventListener("beforeprint", stopPropagationIfNeeded); + window.addEventListener("afterprint", stopPropagationIfNeeded); +} + +let overlayPromise; + +function ensureOverlay() { + if (!overlayPromise) { + overlayManager = _app.PDFViewerApplication.overlayManager; + + if (!overlayManager) { + throw new Error("The overlay manager has not yet been initialized."); + } + + overlayPromise = overlayManager.register("printServiceOverlay", document.getElementById("printServiceOverlay"), abort, true); + document.getElementById("printCancel").onclick = abort; + } + + return overlayPromise; +} + +_app.PDFPrintServiceFactory.instance = { + supportsPrinting: true, + + createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, l10n) { + if (activeService) { + throw new Error("The print service is created and active."); + } + + activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, l10n); + return activeService; + } + +}; + +/***/ }), +/* 46 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting; + +var _ui_utils = __webpack_require__(4); + +var _xfa_layer_builder = __webpack_require__(34); + +var _pdfjsLib = __webpack_require__(5); + +function getXfaHtmlForPrinting(printContainer, pdfDocument) { + const xfaHtml = pdfDocument.allXfaHtml; + const factory = new _xfa_layer_builder.DefaultXfaLayerFactory(); + const scale = Math.round(_ui_utils.CSS_UNITS * 100) / 100; + + for (const xfaPage of xfaHtml.children) { + const page = document.createElement("div"); + page.className = "xfaPrintedPage"; + printContainer.appendChild(page); + const builder = factory.createXfaLayerBuilder(page, null, pdfDocument.annotationStorage, xfaPage); + const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, { + scale + }); + builder.render(viewport, "print"); + } +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ + enumerable: true, + get: function () { + return _app_options.AppOptions; + } +})); +Object.defineProperty(exports, "PDFViewerApplication", ({ + enumerable: true, + get: function () { + return _app.PDFViewerApplication; + } +})); + +var _app_options = __webpack_require__(1); + +var _app = __webpack_require__(3); + +const pdfjsVersion = '2.10.377'; +const pdfjsBuild = '156762c48'; +window.PDFViewerApplication = _app.PDFViewerApplication; +window.PDFViewerApplicationOptions = _app_options.AppOptions; +; +; +{ + __webpack_require__(39); +} +; +{ + __webpack_require__(45); +} + +function getViewerConfiguration() { + let errorWrapper = null; + errorWrapper = { + container: document.getElementById("errorWrapper"), + errorMessage: document.getElementById("errorMessage"), + closeButton: document.getElementById("errorClose"), + errorMoreInfo: document.getElementById("errorMoreInfo"), + moreInfoButton: document.getElementById("errorShowMore"), + lessInfoButton: document.getElementById("errorShowLess") + }; + return { + appContainer: document.body, + mainContainer: document.getElementById("viewerContainer"), + viewerContainer: document.getElementById("viewer"), + eventBus: null, + toolbar: { + container: document.getElementById("toolbarViewer"), + numPages: document.getElementById("numPages"), + pageNumber: document.getElementById("pageNumber"), + scaleSelectContainer: document.getElementById("scaleSelectContainer"), + scaleSelect: document.getElementById("scaleSelect"), + customScaleOption: document.getElementById("customScaleOption"), + previous: document.getElementById("previous"), + next: document.getElementById("next"), + zoomIn: document.getElementById("zoomIn"), + zoomOut: document.getElementById("zoomOut"), + viewFind: document.getElementById("viewFind"), + openFile: document.getElementById("openFile"), + print: document.getElementById("print"), + presentationModeButton: document.getElementById("presentationMode"), + download: document.getElementById("download"), + viewBookmark: document.getElementById("viewBookmark") + }, + secondaryToolbar: { + toolbar: document.getElementById("secondaryToolbar"), + toggleButton: document.getElementById("secondaryToolbarToggle"), + toolbarButtonContainer: document.getElementById("secondaryToolbarButtonContainer"), + presentationModeButton: document.getElementById("secondaryPresentationMode"), + openFileButton: document.getElementById("secondaryOpenFile"), + printButton: document.getElementById("secondaryPrint"), + downloadButton: document.getElementById("secondaryDownload"), + viewBookmarkButton: document.getElementById("secondaryViewBookmark"), + firstPageButton: document.getElementById("firstPage"), + lastPageButton: document.getElementById("lastPage"), + pageRotateCwButton: document.getElementById("pageRotateCw"), + pageRotateCcwButton: document.getElementById("pageRotateCcw"), + cursorSelectToolButton: document.getElementById("cursorSelectTool"), + cursorHandToolButton: document.getElementById("cursorHandTool"), + scrollVerticalButton: document.getElementById("scrollVertical"), + scrollHorizontalButton: document.getElementById("scrollHorizontal"), + scrollWrappedButton: document.getElementById("scrollWrapped"), + spreadNoneButton: document.getElementById("spreadNone"), + spreadOddButton: document.getElementById("spreadOdd"), + spreadEvenButton: document.getElementById("spreadEven"), + documentPropertiesButton: document.getElementById("documentProperties") + }, + sidebar: { + outerContainer: document.getElementById("outerContainer"), + viewerContainer: document.getElementById("viewerContainer"), + toggleButton: document.getElementById("sidebarToggle"), + thumbnailButton: document.getElementById("viewThumbnail"), + outlineButton: document.getElementById("viewOutline"), + attachmentsButton: document.getElementById("viewAttachments"), + layersButton: document.getElementById("viewLayers"), + thumbnailView: document.getElementById("thumbnailView"), + outlineView: document.getElementById("outlineView"), + attachmentsView: document.getElementById("attachmentsView"), + layersView: document.getElementById("layersView"), + outlineOptionsContainer: document.getElementById("outlineOptionsContainer"), + currentOutlineItemButton: document.getElementById("currentOutlineItem") + }, + sidebarResizer: { + outerContainer: document.getElementById("outerContainer"), + resizer: document.getElementById("sidebarResizer") + }, + findBar: { + bar: document.getElementById("findbar"), + toggleButton: document.getElementById("viewFind"), + findField: document.getElementById("findInput"), + highlightAllCheckbox: document.getElementById("findHighlightAll"), + caseSensitiveCheckbox: document.getElementById("findMatchCase"), + entireWordCheckbox: document.getElementById("findEntireWord"), + findMsg: document.getElementById("findMsg"), + findResultsCount: document.getElementById("findResultsCount"), + findPreviousButton: document.getElementById("findPrevious"), + findNextButton: document.getElementById("findNext") + }, + passwordOverlay: { + overlayName: "passwordOverlay", + container: document.getElementById("passwordOverlay"), + label: document.getElementById("passwordText"), + input: document.getElementById("password"), + submitButton: document.getElementById("passwordSubmit"), + cancelButton: document.getElementById("passwordCancel") + }, + documentProperties: { + overlayName: "documentPropertiesOverlay", + container: document.getElementById("documentPropertiesOverlay"), + closeButton: document.getElementById("documentPropertiesClose"), + fields: { + fileName: document.getElementById("fileNameField"), + fileSize: document.getElementById("fileSizeField"), + title: document.getElementById("titleField"), + author: document.getElementById("authorField"), + subject: document.getElementById("subjectField"), + keywords: document.getElementById("keywordsField"), + creationDate: document.getElementById("creationDateField"), + modificationDate: document.getElementById("modificationDateField"), + creator: document.getElementById("creatorField"), + producer: document.getElementById("producerField"), + version: document.getElementById("versionField"), + pageCount: document.getElementById("pageCountField"), + pageSize: document.getElementById("pageSizeField"), + linearized: document.getElementById("linearizedField") + } + }, + errorWrapper, + printContainer: document.getElementById("printContainer"), + openFileInputName: "fileInput", + debuggerScriptPath: "./debugger.js" + }; +} + +function webViewerLoad() { + const config = getViewerConfiguration(); + const event = document.createEvent("CustomEvent"); + event.initCustomEvent("webviewerloaded", true, true, { + source: window + }); + + try { + parent.document.dispatchEvent(event); + } catch (ex) { + console.error(`webviewerloaded: ${ex}`); + document.dispatchEvent(event); + } + + _app.PDFViewerApplication.run(config); +} + +if (document.blockUnblockOnload) { + document.blockUnblockOnload(true); +} + +if (document.readyState === "interactive" || document.readyState === "complete") { + webViewerLoad(); +} else { + document.addEventListener("DOMContentLoaded", webViewerLoad, true); +} +})(); + +/******/ })() +; +//# sourceMappingURL=viewer.js.map \ No newline at end of file diff --git a/ant-design-vue-jeecg/public/pdfjs/web/viewer.js.map b/ant-design-vue-jeecg/public/pdfjs/web/viewer.js.map new file mode 100644 index 0000000..bbdcb31 --- /dev/null +++ b/ant-design-vue-jeecg/public/pdfjs/web/viewer.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/viewer_compatibility.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/base_viewer.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/pdf_single_page_viewer.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"names":["OptionKind","VIEWER","API","WORKER","PREFERENCE","defaultOptions","cursorToolOnLoad","value","kind","defaultUrl","defaultZoomValue","disableHistory","disablePageLabels","enablePermissions","enablePrintAutoRotate","enableScripting","externalLinkRel","externalLinkTarget","historyUpdateUrl","ignoreDestinationZoom","imageResourcesPath","maxCanvasPixels","compatibility","viewerCompatibilityParams","pdfBugEnabled","printResolution","renderer","renderInteractiveForms","sidebarViewOnLoad","scrollModeOnLoad","spreadModeOnLoad","textLayerMode","useOnlyCssZoom","viewerCssTheme","viewOnLoad","cMapPacked","cMapUrl","disableAutoFetch","disableFontFace","disableRange","disableStream","docBaseUrl","enableXfa","fontExtraProperties","isEvalSupported","maxImageSize","pdfBug","standardFontDataUrl","verbosity","workerPort","workerSrc","navigator","userOptions","Object","constructor","get","userOption","defaultOption","getAll","options","valueType","Number","set","setAll","remove","compatibilityParams","userAgent","platform","maxTouchPoints","isAndroid","isIOS","isIOSChrome","DEFAULT_SCALE_DELTA","DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT","FORCE_PAGES_LOADED_TIMEOUT","WHEEL_ZOOM_DISABLED_TIMEOUT","ENABLE_PERMISSIONS_CLASS","ViewOnLoad","UNKNOWN","PREVIOUS","INITIAL","ViewerCssTheme","AUTOMATIC","LIGHT","DARK","KNOWN_VERSIONS","KNOWN_GENERATORS","updateFindControlState","updateFindMatchesCount","initPassiveLoading","fallback","reportTelemetry","createDownloadManager","createPreferences","createL10n","createScripting","supportsIntegratedFind","shadow","supportsDocumentFonts","supportedMouseWheelZoomModifierKeys","ctrlKey","metaKey","isInAutomation","PDFViewerApplication","initialBookmark","document","_initializedCapability","_fellback","appConfig","pdfDocument","pdfLoadingTask","printService","pdfViewer","pdfThumbnailViewer","pdfRenderingQueue","pdfPresentationMode","pdfDocumentProperties","pdfLinkService","pdfHistory","pdfSidebar","pdfSidebarResizer","pdfOutlineViewer","pdfAttachmentViewer","pdfLayerViewer","pdfCursorTools","pdfScriptingManager","store","downloadManager","overlayManager","preferences","toolbar","secondaryToolbar","eventBus","l10n","isInitialViewSet","downloadComplete","isViewerEmbedded","window","url","baseUrl","externalServices","_boundEvents","documentInfo","metadata","_contentDispositionFilename","_contentLength","_saveInProgress","_wheelUnusedTicks","_idleCallbacks","AppOptions","LinkTarget","appContainer","source","console","reason","hash","hashParams","parseQueryString","waitOn","loadFakeWorker","TextLayerMode","viewer","enabled","loadAndEnablePDFBug","locale","dir","_forceCssTheme","cssTheme","styleSheet","cssRules","mediaMatcher","mediaRule","mediaRegex","i","ii","rule","darkRules","findController","linkService","sandboxBundleSrc","scriptingFactory","docPropertiesLookup","container","renderingQueue","scriptingManager","elements","run","zoomIn","newScale","Math","zoomOut","zoomReset","PDFPrintServiceFactory","doc","support","bar","setTitleUsingUrl","title","getPdfFilenameFromUrl","decodeURIComponent","getFilenameFromUrl","setTitle","_cancelIdleCallbacks","sourceEventType","promises","webViewerResetPermissions","PDFBug","Promise","workerParameters","GlobalWorkerOptions","parameters","file","apiParameters","key","args","loadingTask","getDocument","loaded","exception","msg","message","_ensureDownloadComplete","filename","data","blob","type","downloadOrSave","download","_documentError","moreInfo","_otherError","moreInfoText","version","build","stack","line","errorWrapperConfig","errorWrapper","errorMessage","closeButton","errorMoreInfo","moreInfoButton","lessInfoButton","parts","progress","percent","level","isNaN","clearTimeout","load","firstPagePromise","pageLayoutPromise","pageModePromise","openActionPromise","baseDocumentUrl","storedPromise","page","zoom","scrollLeft","scrollTop","rotation","sidebarView","SidebarView","scrollMode","ScrollMode","spreadMode","SpreadMode","pdfPage","fingerprint","initialDest","openAction","stored","parseInt","pageMode","apiPageModeToSidebarView","pageLayout","apiPageLayoutToSpreadMode","resolve","setTimeout","pagesPromise","onePageRendered","outline","attachments","optionalContentConfig","callback","timeout","once","baseURL","filesize","authors","numPages","URL","markInfo","tagged","triggerAutoPrint","javaScript","js","UNSUPPORTED_FEATURES","AutoPrintRegExp","info","pdfTitle","metadataTitle","contentDispositionFilename","versionId","generatorId","producer","generator","formType","labels","numLabels","_initializePdfHistory","resetHistory","updateUrl","JSON","explicitDest","pageNumber","permissions","PermissionFlag","_initializeAnnotationStorageCallbacks","annotationStorage","setInitialView","setRotation","angle","isValidRotation","setViewerModes","isValidScrollMode","isValidSpreadMode","_cleanup","RendererType","forceRendering","beforePrint","pagesOverview","printContainer","optionalContentConfigPromise","afterPrint","rotatePages","requestPresentationMode","triggerPrinting","bindEvents","bindWindowEvents","event","detail","passive","unbindEvents","unbindWindowEvents","accumulateWheelTicks","ticks","wholeTicks","_unblockDocumentLoadEvent","HOSTED_VIEWER_ORIGINS","validateFileURL","viewerOrigin","origin","protocol","ex","loadScript","PDFWorker","OPS","Stats","pageView","pageStats","queryString","params","fileInput","files","evt","webViewerOpenFileViaURL","thumbnailView","view","webViewerSave","location","href","currentPage","loading","RenderingStates","currentScaleValue","webViewerFileInputChange","originalUrl","fileReader","buffer","webViewerOpenFile","openFileInputName","query","phraseSearch","caseSensitive","entireWord","highlightAll","findPrevious","result","setZoomDisabledTimeout","zoomDisabledTimeout","previousScale","delta","normalizeWheelEventDirection","WheelEvent","PIXELS_PER_LINE_SCALE","currentScale","scaleCorrectionFactor","rect","dx","dy","handled","ensureViewerFocused","cmd","isViewerInPresentationMode","findState","curElement","curElementTagName","turnPage","turnOnlyIfPageFit","CursorTool","instance","supportsPrinting","createPrintService","CSS_UNITS","DEFAULT_SCALE_VALUE","DEFAULT_SCALE","MIN_SCALE","MAX_SCALE","UNKNOWN_SCALE","MAX_AUTO_SCALE","SCROLLBAR_PADDING","VERTICAL_PADDING","LOADINGBAR_END_OFFSET_VAR","PresentationModeState","NORMAL","CHANGING","FULLSCREEN","NONE","THUMBS","OUTLINE","ATTACHMENTS","LAYERS","CANVAS","SVG","DISABLE","ENABLE","ENABLE_ENHANCE","VERTICAL","HORIZONTAL","WRAPPED","ODD","EVEN","devicePixelRatio","backingStoreRatio","ctx","pixelRatio","sx","sy","scaled","scrollMatches","parent","element","offsetY","offsetX","getComputedStyle","spot","debounceScroll","rAF","currentX","viewAreaElement","lastX","state","currentY","lastY","right","down","_eventHandler","param","minIndex","maxIndex","items","condition","currentIndex","currentItem","xinv","limit","x_","x","a","b","c","d","p","q","r","changeOrientation","rotate","width","height","index","elt","views","pageTop","sortByVisibility","horizontal","rtl","top","scrollEl","bottom","left","elementBottom","elementLeft","elementRight","visible","numViews","firstVisibleElementInd","binarySearchFirstItem","backtrackBeforeAllVisibleElements","lastEdge","currentWidth","currentHeight","viewWidth","viewHeight","viewRight","viewBottom","hiddenHeight","hiddenWidth","fractionHeight","fractionWidth","id","y","widthPercent","first","last","pc","MOUSE_DOM_DELTA_PIXEL_MODE","MOUSE_DOM_DELTA_LINE_MODE","MOUSE_PIXELS_PER_LINE","MOUSE_LINES_PER_PAGE","mode","size","WaitOnType","EVENT","TIMEOUT","delay","target","eventHandler","handler","timeoutHandler","animationStarted","on","external","off","dispatch","eventListeners","Array","listener","externalListeners","_on","_off","units","_updateBar","progressSize","clamp","setWidth","scrollbarWidth","hide","show","moved","len","arr","write","read","curRoot","curActiveOrFocused","pdfjsLib","__non_webpack_require__","module","SELECT","HAND","ZOOM","activeTool","switchTool","tool","disableActiveTool","_dispatchEvent","_addEventListeners","previouslyActive","overlay","GrabToPan","CSS_CLASS_GRAB","activate","deactivate","toggle","ignoreTarget","node","_onmousedown","focusedElement","_onmousemove","isLeftMouseReleased","xDiff","yDiff","behavior","_endPan","chrome","isChrome15OrOpera15plus","isSafari6plus","CLEANUP_TIMEOUT","RUNNING","PAUSED","FINISHED","setViewer","setThumbnailViewer","isHighestPriority","renderHighestPriority","getHighestPriority","visibleViews","numVisible","nextPageIndex","previousPageIndex","isViewFinished","renderView","active","register","callerCloseMethod","canForceClose","unregister","open","close","_keyDown","_closeThroughCaller","e","passwordIncorrect","PasswordResponses","verify","password","setUpdateCallback","reset","keepRenderedCapability","attachmentsCount","_bindLink","render","names","fragment","item","content","div","_appendAttachment","renderedPromise","TREEITEM_OFFSET_TOP","TREEITEM_SELECTED_CLASS","_normalizeTextContent","removeNullCharacters","_addToggleButton","hidden","toggler","shouldShowAll","_toggleTreeItem","root","_toggleAllTreeItems","_finishRendering","hasAnyNesting","_updateCurrentTreeItem","treeItem","_scrollToCurrentTreeItem","currentNode","DEFAULT_FIELD_CONTENT","NON_METRIC_LOCALES","US_PAGE_NAMES","METRIC_PAGE_NAMES","isPortrait","pageNames","freezeFieldData","writable","enumerable","configurable","currentPageNumber","pagesRotation","getPageSizeInches","author","subject","keywords","creator","pageCount","linearized","_currentPageNumber","_pagesRotation","contentLength","setDocument","_reset","_updateUI","_parseFileSize","fileSize","kb","mb","size_mb","size_kb","size_b","_parsePageSize","pageSizeInches","isPortraitOrientation","sizeInches","sizeMillimeters","rawName","getPageName","exactMillimeters","intMillimeters","name","_parseDate","dateObject","PDFDateString","date","time","_parseLinearization","isLinearized","MATCHES_COUNT_LIMIT","dispatchEvent","updateUIState","findMsg","status","FindState","previous","updateResultsCount","current","total","matchCountMsg","_adjustWidth","findbarHeight","inputContainerHeight","FOUND","NOT_FOUND","PENDING","FIND_TIMEOUT","MATCH_SCROLL_OFFSET_TOP","MATCH_SCROLL_OFFSET_LEFT","CHARACTERS_TO_NORMALIZE","normalizationRegex","replace","diffs","normalizedText","normalizedCh","diff","ch","totalDiff","matchIndex","highlightMatches","pageMatches","pageMatchesLength","selected","executeCommand","findbarClosed","pendingTimeout","scrollMatchIntoView","selectedLeft","pageIndex","scrollIntoView","pageIdx","matchIdx","wrapped","_query","normalize","_shouldDirtyMatch","_prepareMatches","currentElem","matchesWithLength","nextElem","prevElem","isSubTerm","matches","matchesLength","_isEntireWord","startIdx","getCharacterType","endIdx","_calculatePhraseMatch","queryLen","pageContent","originalMatchIdx","getOriginalIndex","matchEnd","originalQueryLen","_calculateWordMatch","queryArray","subquery","subqueryLen","match","matchLength","skipped","_calculateMatch","pageDiffs","pageMatchesCount","_extractText","promise","extractTextCapability","normalizeWhitespace","textContent","textItems","strBuf","j","jj","_updatePage","_updateAllPages","_nextMatch","currentPageIndex","offset","numPageMatches","_matchesReady","numMatches","_nextPageMatch","_advanceOffsetPage","_updateMatch","found","previousPage","_onFindBarClose","_requestMatchesCount","_updateUIResultsCount","matchesCount","_updateUIState","rawQuery","CharacterType","SPACE","ALPHA_LETTER","PUNCT","HAN_LETTER","KATAKANA_LETTER","HIRAGANA_LETTER","HALFWIDTH_KATAKANA_LETTER","THAI_LETTER","charCode","isAlphabeticalScript","isAscii","isAsciiSpace","isAsciiAlpha","isAsciiDigit","isThai","isHan","isKatakana","isHiragana","isHalfwidthKatakana","HASH_CHANGE_TIMEOUT","POSITION_UPDATED_THRESHOLD","UPDATE_VIEWAREA_TIMEOUT","initialize","reInitialized","getCurrentHash","destination","push","namedDest","forceReplace","isDestArraysEqual","dest","pushPage","pushCurrentPosition","back","forward","popStateInProgress","initialRotation","_pushOrReplaceState","shouldReplace","newState","uid","newUrl","_tryPushCurrentPosition","temporary","position","_isValidPage","val","_isValidState","checkReload","performance","perfEntry","_updateInternalState","removeTemporary","_parseCurrentHash","checkNameddest","unescape","nameddest","_updateViewarea","_popState","newHash","hashChanged","waitOnEventOrTimeout","_pageHide","_bindEvents","updateViewarea","popState","pageHide","_unbindEvents","destHash","second","isEntryEqual","firstDest","secondDest","setVisibility","input","_setNestedName","groups","queue","layersCount","levelData","itemsDiv","groupId","group","label","_resetLayers","setHistory","pagesCount","_goToDestinationHelper","destRef","destArray","goToDestination","goToPage","getDestinationHash","escape","str","getAnchorUrl","setHash","zoomArgs","zoomArg","zoomArgNumber","parseFloat","allowNegativeOffset","isValidExplicitDestination","executeNamedAction","cachePageRef","refStr","pageRef","_cachedPageNumber","isPageVisible","isPageCached","destLength","allowNull","outlineCount","currentOutlineItemPromise","addLinkAttributes","newWindow","rel","_setStyles","count","totalCount","nestedCount","nestedItems","_currentOutlineItem","pageNumberToDestHash","linkElement","_getPageNumberToDestHash","pageNumberNesting","nesting","currentNesting","DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS","DELAY_BEFORE_HIDING_CONTROLS","ACTIVE_SELECTOR","CONTROLS_SELECTOR","MOUSE_SCROLL_COOLDOWN_TIME","PAGE_SWITCH_THRESHOLD","SWIPE_MIN_DISTANCE_THRESHOLD","SWIPE_ANGLE_THRESHOLD","request","Element","_mouseWheel","normalizeWheelEventDelta","currentTime","Date","storedTime","totalDelta","success","isFullscreen","_notifyStateChange","_setSwitchInProgress","_resetSwitchInProgress","_enter","_exit","_mouseDown","isInternalLink","_contextMenu","_showControls","_hideControls","_resetMouseScrollState","_touchSwipe","startX","startY","endX","endY","absAngle","_addWindowListeners","_removeWindowListeners","_fullscreenChange","_addFullscreenChangeListeners","_removeFullscreenChangeListeners","error","docProperties","appInfo","language","docInfo","actions","dispatchWillSave","dispatchDidSave","dispatchWillPrint","dispatchDidPrint","mouseState","destroyPromise","ready","_internalEvents","_domEvents","_pageOpenPending","_visitedPages","_updateFromSandbox","isInPresentationMode","ids","_dispatchPageOpen","visitedPages","actionsPromise","_dispatchPageClose","_getDocProperties","_createScripting","_destroyScripting","UI_NOTIFICATION_CLASS","visibleView","isThumbnailViewVisible","isOutlineViewVisible","isAttachmentsViewVisible","isLayersViewVisible","switchView","forceOpen","_switchView","isViewChanged","shouldForceRendering","_forceRendering","_updateThumbnailViewer","_showUINotification","_hideUINotification","onTreeLoaded","button","SIDEBAR_WIDTH_VAR","SIDEBAR_MIN_WIDTH","SIDEBAR_RESIZING_CLASS","outerContainerWidth","_updateWidth","maxWidth","_mouseMove","_mouseUp","updated","THUMBNAIL_SCROLL_MARGIN","THUMBNAIL_SELECTED_CLASS","watchScroll","_scrollUpdated","getThumbnail","_getVisibleThumbs","scrollThumbnailIntoView","prevThumbnailView","visibleThumbs","numVisibleThumbs","shouldScroll","cleanup","TempImageFactory","_resetView","firstPdfPage","viewport","scale","checkSetImageDisabled","pageNum","thumbnail","defaultViewport","firstThumbnailView","_cancelRendering","setPageLabels","_ensurePdfPageLoaded","thumbView","DRAW_UPSCALE_FACTOR","MAX_NUM_SCALING_STEPS","THUMBNAIL_CANVAS_BORDER_WIDTH","THUMBNAIL_WIDTH","tempCanvasCache","getCanvas","tempCanvas","alpha","destroyCanvas","pageWidth","pageHeight","pageRatio","anchor","ring","borderAdjustment","setPdfPage","totalRotation","update","cancelRendering","_getPageDrawContext","upscaleFactor","canvas","outputScale","getOutputScale","transform","_convertCanvasToImage","reducedCanvas","image","draw","finishRenderTask","renderTask","drawViewport","renderContinueCallback","cont","renderContext","canvasContext","resultPromise","pageCached","setImage","_reduceImage","img","reducedWidth","reducedHeight","reducedImageCtx","_thumbPageTitle","_thumbPageCanvas","setPageLabel","_viewerElement","_scrollIntoView","pageSpot","pageDiv","_getVisiblePages","_updateHelper","currentId","stillFullyVisible","visiblePages","DEFAULT_CACHE_SIZE","pageIdsToKeep","iMax","pagesToKeep","moveToEndOfArray","viewerVersion","getPageView","pageViewsReady","_setCurrentPageNumber","resetCurrentPageView","pageLabel","currentPageLabel","_onePageRenderedOrForceFetch","isPureXfa","textLayerFactory","xfaLayerFactory","annotationLayerFactory","structTreeLayerFactory","firstPageView","getPagesLeft","_scrollUpdate","_setScaleUpdatePages","noScroll","preset","newValue","isSameScale","presetValue","_pageWidthScaleFactor","_setScale","noPadding","hPadding","vPadding","pageWidthScale","pageHeightScale","horizontalScale","_resetCurrentPageView","pageLabelToPageNumber","scrollPageIntoView","widthScale","heightScale","boundingRect","_updateLocation","normalizedScaleValue","firstPage","pdfOpenParams","currentPageView","topLeft","intLeft","intTop","numVisiblePages","newCacheSize","containsElement","focus","_isScrollModeHorizontal","_isContainerRtl","isChangingPresentationMode","isHorizontalScrollbarEnabled","isVerticalScrollbarEnabled","_getCurrentVisiblePage","currentlyVisiblePages","scrollAhead","createTextLayerBuilder","enhanceTextSelection","createAnnotationLayerBuilder","hasJSActionsPromise","createXfaLayerBuilder","createStructTreeLayerBuilder","hasEqualPageSizes","getPagesOverview","_updateScrollMode","_updateSpreadMode","pages","parity","spread","_getPageAdvance","yArray","expectedId","firstId","lastId","nextPage","advance","intent","hasJSActions","annotations","dontFlip","AnnotationLayer","cancel","DEFAULT_L10N_STRINGS","of_pages","page_of_pages","document_properties_kb","document_properties_mb","document_properties_date_string","document_properties_page_size_unit_inches","document_properties_page_size_unit_millimeters","document_properties_page_size_orientation_portrait","document_properties_page_size_orientation_landscape","document_properties_page_size_name_a3","document_properties_page_size_name_a4","document_properties_page_size_name_letter","document_properties_page_size_name_legal","document_properties_page_size_dimension_string","document_properties_page_size_dimension_name_string","document_properties_linearized_yes","document_properties_linearized_no","print_progress_percent","additional_layers","page_landmark","thumb_page_title","thumb_page_canvas","find_reached_top","find_reached_bottom","find_not_found","error_version_info","error_message","error_stack","error_file","error_line","rendering_error","page_scale_width","page_scale_fit","page_scale_auto","page_scale_actual","page_scale_percent","loading_error","invalid_file_error","missing_file_error","unexpected_response_error","printing_not_supported","printing_not_ready","web_fonts_disabled","PARTIAL_LANG_CODES","en","es","fy","ga","gu","hi","hy","nb","ne","nn","pa","pt","sv","zh","langCode","NullL10n","getL10nFallback","formatL10nValue","MAX_CANVAS_PIXELS","destroy","_renderAnnotationLayer","_renderXfaLayer","_resetZoomLayer","removeFromDOM","zoomLayerCanvas","keepZoomLayer","keepAnnotationLayer","keepXfaLayer","childNodes","zoomLayerNode","annotationLayerNode","xfaLayerNode","redrawAnnotationLayer","redrawXfaLayer","cssTransform","timestamp","isScalingRestricted","relativeRotation","absRotation","scaleX","scaleY","textLayerViewport","textRelativeRotation","textAbsRotation","textLayerDiv","transX","transY","getPagePoint","canvasWrapper","textLayer","finishPaintTask","paintTask","readableStream","includeMarkedContent","tree","treeDom","paintOnCanvas","renderCapability","onRenderContinue","isCanvasHidden","showCanvas","actualSizeViewport","pixelsInViewport","maxScale","sfx","approximateFraction","sfy","roundToDivide","paintOnSvg","cancelled","ensureNotCancelled","opList","svgGfx","svg","wrapper","PDF_ROLE_TO_HTML_ROLE","Document","DocumentFragment","Part","Sect","Div","Aside","NonStruct","P","H","Title","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","_setAttributes","structElement","htmlElement","_walk","role","EXPAND_DIVS_TIMEOUT","endOfContent","numTextDivs","textLayerFrag","textContentStream","textDivs","textContentItemsStr","setTextContentStream","setTextContent","_convertMatches","iIndex","end","m","mm","begin","divIdx","_renderMatches","isSelectedPage","selectedMatchIdx","prevEnd","infinity","appendTextToDiv","span","className","i0","i1","isSelected","highlightSuffix","beginText","n0","n1","_updateMatches","clearedUntilDivIdx","n","_bindMouse","expandDivsTimer","adjustTop","divBounds","xfa","XfaLayer","xfaHtml","eventName","eventDetails","lastPage","pageRotateCw","pageRotateCcw","isOpen","setPageNumber","setPagesCount","_bindClickListeners","details","_bindCursorToolsListener","buttons","_bindScrollModeListener","isScrollModeHorizontal","scrollModeChanged","_bindSpreadModeListener","spreadModeChanged","_setMaxHeight","_ensurePageViewVisible","previousPageView","viewerNodes","scrolledDown","PAGE_NUMBER_LOADING_INDICATOR","SCALE_SELECT_CONTAINER_WIDTH","SCALE_SELECT_WIDTH","scaleSelectContainer","scaleSelect","customScaleOption","next","setPageScale","_bindListeners","self","resetNumPages","pageScale","predefinedValueFound","option","updateLoadingIndicatorState","pageNumberInput","_adjustScaleWidth","predefinedValuesPromise","overflow","DEFAULT_VIEW_HISTORY_CACHE_SIZE","cacheSize","databaseStr","database","branch","_writeToStorage","localStorage","_readFromStorage","setMultiple","properties","getMultiple","values","GenericCom","prefs","prefValue","defaultValue","defaultType","obj","downloadUrl","createValidAbsoluteUrl","downloadData","blobUrl","createObjectURL","openOrDownloadData","isPdfData","isPdfFile","contentType","viewerUrl","encodeURIComponent","webL10n","fixupLangCode","getLanguage","getDirection","translate","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","gAsyncResourceLoading","script","l10nId","l10nArgs","onSuccess","onFailure","xhr","text","dictionary","reBlank","reComment","reSection","reImport","reSplit","entries","rawText","currentLang","genericLang","lang","skipLang","parsedRawLinesCallback","loadImport","tmp","evalString","nextEntry","xhrLoadText","parseRawLines","parsedPropertiesCallback","parseProperties","prop","successCallback","clear","langLinks","getL10nResourceLinks","langCount","dict","getL10nDictionary","defaultLocale","anyCaseLang","onResourceLoaded","gResourceCount","link","parseResource","resource","locales2rules","list","start","pluralRules","isBetween","getPluralRules","rv","substIndexes","substArguments","reIndex","reMatch","macroName","paramName","macro","reArgs","arg","getL10nAttributes","getL10nData","getChildElementCount","children","l","textNode","getTranslatableChildren","elementCount","translateElement","getData","getText","setLanguage","loadLocale","rtlList","shortCode","getReadyState","createSandbox","sandbox","dispatchEventInSandbox","destroySandbox","activeService","scratchCanvas","PRINT_UNITS","includeAnnotationStorage","PDFPrintService","layout","body","pageSize","ensureOverlay","renderPages","getXfaHtmlForPrinting","renderNextPage","renderProgress","renderPage","useRenderedPage","performPrint","print","throwIfInactive","activeServiceOnEntry","abort","progressContainer","progressBar","progressPerc","stopPropagationIfNeeded","overlayPromise","factory","builder","getXfaPageViewport","pdfjsVersion","pdfjsBuild","require","mainContainer","viewerContainer","viewFind","openFile","presentationModeButton","viewBookmark","toggleButton","toolbarButtonContainer","openFileButton","printButton","downloadButton","viewBookmarkButton","firstPageButton","lastPageButton","pageRotateCwButton","pageRotateCcwButton","cursorSelectToolButton","cursorHandToolButton","scrollVerticalButton","scrollHorizontalButton","scrollWrappedButton","spreadNoneButton","spreadOddButton","spreadEvenButton","documentPropertiesButton","sidebar","outerContainer","thumbnailButton","outlineButton","attachmentsButton","layersButton","outlineView","attachmentsView","layersView","outlineOptionsContainer","currentOutlineItemButton","sidebarResizer","resizer","findBar","findField","highlightAllCheckbox","caseSensitiveCheckbox","entireWordCheckbox","findResultsCount","findPreviousButton","findNextButton","passwordOverlay","overlayName","submitButton","cancelButton","documentProperties","fields","fileName","creationDate","modificationDate","debuggerScriptPath","config","getViewerConfiguration","webViewerLoad"],"mappings":"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","file":"viewer.js","sourcesContent":["/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { viewerCompatibilityParams } from \"./viewer_compatibility.js\";\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * PLEASE NOTE: To avoid introducing unnecessary dependencies, we specify the\n * values below *explicitly* rather than relying on imported types.\n */\nconst defaultOptions = {\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultUrl: {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n compatibility: viewerCompatibilityParams.maxCanvasPixels,\n kind: OptionKind.VIEWER,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n renderer: {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER,\n },\n renderInteractiveForms: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n standardFontDataUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/standard_fonts/\"\n : \"../web/standard_fonts/\",\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: typeof navigator !== \"undefined\" ? navigator.language : \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n\n defaultOptions.renderer.kind += OptionKind.PREFERENCE;\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return defaultOption.compatibility ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : defaultOption.compatibility ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n}\n\nexport { AppOptions, OptionKind };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const userAgent =\n (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n const platform =\n (typeof navigator !== \"undefined\" && navigator.platform) || \"\";\n const maxTouchPoints =\n (typeof navigator !== \"undefined\" && navigator.maxTouchPoints) || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n const isIOSChrome = /CriOS/.test(userAgent);\n\n // Checks if possible to use URL.createObjectURL()\n // Support: IE, Chrome on iOS\n (function checkOnBlobSupport() {\n // Sometimes Chrome on iOS loses data created with createObjectURL(),\n // see issue #8081.\n if (isIOSChrome) {\n compatibilityParams.disableCreateObjectURL = true;\n }\n })();\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\nconst viewerCompatibilityParams = Object.freeze(compatibilityParams);\n\nexport { viewerCompatibilityParams };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals PDFBug, Stats */\n\nimport {\n animationStarted,\n apiPageLayoutToSpreadMode,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n EventBus,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport {\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n LinkTarget,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n PermissionFlag,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { PDFRenderingQueue, RenderingStates } from \"./pdf_rendering_queue.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFLinkService } from \"./pdf_link_service.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { viewerCompatibilityParams } from \"./viewer_compatibility.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\nconst ENABLE_PERMISSIONS_CLASS = \"enablePermissions\";\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static async fallback(data) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n _fellback: false,\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an + + + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecg/README.md b/ant-design-vue-jeecg/src/components/jeecg/README.md new file mode 100644 index 0000000..d8e48d1 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/README.md @@ -0,0 +1,512 @@ +# JDate 日期组件 使用文档 + +###### 说明: antd-vue日期组件需要用moment中转一下,用起来不是很方便,特二次封装,使用时只需要传字符串即可 +## 参数配置 +| 参数 | 类型 | 必填 |说明| +|--------------|---------|----|---------| +| placeholder |string | | placeholder | +| readOnly | boolean | | true/false 默认false | +| value | string | | 绑定v-model或是v-decorator后不需要设置 | +| showTime | boolean | | 是否展示时间true/false 默认false | +| dateFormat | string | |日期格式 默认'YYYY-MM-DD' 若showTime设置为true则需要将其设置成对应的时间格式(如:YYYY-MM-DD HH:mm:ss) | +| triggerChange | string | |触发组件值改变的事件是否是change,当使用v-decorator时且没有设置decorator的option.trigger为input需要设置该值为true | +使用示例 +---- +1.组件带有v-model的使用方法 +```vue + +``` + +2.组件带有v-decorator的使用方法 + a).设置trigger-change属性为true + ```vue + + ``` + + b).设置decorator的option.trigger为input + ```vue + + ``` + +3.其他使用 +添加style +```vue + +``` +添加placeholder +```vue + +``` +添加readOnly +```vue + +``` + +备注: +script内需引入jdate +```vue + +``` + + + --- + + +# JSuperQuery 高级查询 使用文档 +## 参数配置 +| 参数 | 类型 | 必填 | 说明 | +|--------------|---------|----|----------------------| +| fieldList | array |✔| 需要查询的列集合示例如下,type类型有:date/datetime/string/int/number | +| callback | array | | 回调函数名称(非必须)默认handleSuperQuery | + +fieldList结构示例: +```vue + const superQueryFieldList=[{ + type:"date", + value:"birthday", + text:"生日" + },{ + type:"string", + value:"name", + text:"用户名" + },{ + type:"int", + value:"age", + text:"年龄" + }] +``` +页面代码概述: +---- +1.import之后再components之内声明 +```vue +import JSuperQuery from '@/components/jeecg/JSuperQuery.vue'; + export default { + name: "JeecgDemoList", + components: { + JSuperQuery + }, + +``` +2.页面引用 +```vue + + +``` +3.list页面data中需要定义三个属性: +```vue + fieldList:superQueryFieldList, + superQueryFlag:false, + superQueryParams:"" +``` +4.list页面声明回调事件handleSuperQuery(与组件的callback对应即可) +```vue +//高级查询方法 +handleSuperQuery(arg) { + if(!arg){ + this.superQueryParams='' + this.superQueryFlag = false + }else{ + this.superQueryFlag = true + this.superQueryParams=JSON.stringify(arg) + } + this.loadData() +}, +``` +5.改造list页面方法 +```vue + // 获取查询条件 + getQueryParams() { + let sqp = {} + if(this.superQueryParams){ + sqp['superQueryParams']=encodeURI(this.superQueryParams) + } + var param = Object.assign(sqp, this.queryParam, this.isorter); + param.field = this.getQueryField(); + param.pageNo = this.ipagination.current; + param.pageSize = this.ipagination.pageSize; + return filterObj(param); + }, +``` +6.打开弹框调用show方法: +```vue +this.$refs.superQueryModal.show(); +``` + +# JEllipsis 字符串超长截取省略号显示 + +###### 说明: 遇到超长文本展示,通过此标签可以截取省略号显示,鼠标放置会提示全文本 +## 参数配置 +| 参数 | 类型 | 必填 | 说明 | +|--------|---------|----|----------------| +| value |string | 必填 | 字符串文本| +| length | number | 非必填 | 默认25 | +使用示例 +---- +1.组件带有v-model的使用方法 +```vue + + + +# Modal弹框实现最大化功能 + +1.定义modal的宽度: +```vue + +``` +2.自定义modal的title,居右显示切换图标 +```vue + +``` +3.定义toggleScreen事件,用于切换modal宽度 +```vue + toggleScreen(){ + if(this.modaltoggleFlag){ + this.modalWidth = window.innerWidth; + }else{ + this.modalWidth = 800; + } + this.modaltoggleFlag = !this.modaltoggleFlag; + }, +``` +4.data中声明上述用到的属性 +```vue + data () { + return { + modalWidth:800, + modaltoggleFlag:true, +``` + +# 下拉选项滚动错位的解决方法 + +## 问题描述 + +当使用了 `a-modal` 或其他带有滚动条的组件时,使用`a-select`组件并打开下拉框时滚动滚动条,就会导致错位的问题产生。 + +## 解决方法 + +大多数情况下,在 `a-select` 上添加一个 `getPopupContainer` 属性,值为`node => node.parentNode`即可解决。 +但是如果遇到 `a-select` 标签层级过深的情况,可能仍然会显示异常,只需要多加几个`.parentNode` (例:node => node.parentNode.parentNode.parentNode)多尝试几次直到解决问题即可。 + +### 代码示例 + +```html + +``` + +# JAsyncTreeList 异步数列表组件使用说明 + +## 引入组件 + +```js +import JTreeTable from '@/components/jeecg/JTreeTable' +export default { + components: { JTreeTable } +} +``` + +## 所需参数 + +| 参数 | 类型 | 必填 | 说明 | +|-------------|--------|--------|--------------------------------------------------------------| +| rowKey | String | 非必填 | 表格行 key 的取值,默认为"id" | +| columns | Array | 必填 | 表格列的配置描述,具体见Antd官方文档 | +| url | String | 必填 | 数据查询url | +| childrenUrl | String | 非必填 | 查询子级时的url,若不填则使用url参数查询子级 | +| queryKey | String | 非必填 | 根据某个字段查询,如果传递 id 就根据 id 查询,默认为parentId | +| queryParams | Object | 非必填 | 查询参数,当查询参数改变的时候会自动重新查询,默认为{} | +| topValue | String | 非必填 | 查询顶级时的值,如果顶级为0,则传0,默认为null | +| tableProps | Object | 非必填 | 自定义给内部table绑定的props | + +## 代码示例 + +```html + + + +``` + +# JCheckbox 使用文档 + +###### 说明: antd-vue checkbox组件处理的是数组,用起来不是很方便,特二次封装,使用时只需处理字符串即可 +## 参数配置 +| 参数 | 类型 | 必填 |说明| +|--------------|---------|----|---------| +| options |array |✔| checkbox需要配置的项,是个数组,数组中每个对象包含两个属性:label(用于显示)和value(用于存储) | + +使用示例 +---- +```vue + + + +``` + +# JCodeEditor 使用文档 + +###### 说明: 一个简易版的代码编辑器,支持语法高亮 +## 参数配置 +| 参数 | 类型 | 必填 |说明| +|--------------|---------|----|---------| +| language |string | | 表示当前编写代码的类型 javascript/html/css/sql | +| placeholder |string | | placeholder | +| lineNumbers |Boolean | | 是否显示行号 | +| fullScreen |Boolean | | 是否显示全屏按钮 | +| zIndex |string | | 全屏以后的z-index | + +使用示例 +---- +```vue + + + +``` + +# JFormContainer 使用文档 + +###### 说明: 暂用于表单禁用 + +使用示例 +---- +```vue + + + + + + +``` + +# JImportModal 使用文档 + +###### 说明: 用于列表页面导入excel功能 + +使用示例 +---- +```vue + + + + +``` + +# JSelectMultiple 多选下拉组件 +online用 实际开发请使用components/dict/JMultiSelectTag + +# JSlider 滑块验证码 + +使用示例 +---- +```vue + + + +``` + + +# JTreeSelect 树形下拉组件 +异步加载的树形下拉组件 + +## 参数配置 +| 参数 | 类型 | 必填 |说明| +|--------------|---------|----|---------| +| placeholder |string | | placeholder | +| dict |string | ✔| 表名,显示字段名,存储字段名拼接的字符串 | +| pidField |string | ✔| 父ID的字段名 | +| pidValue |string | | 根节点父ID的值 默认'0' 不可以设置为空,如果想使用此组件,而数据库根节点父ID为空,请修改之 | +| multiple |boolean | |是否支持多选 | + +使用示例 +---- +```vue + + + +``` + + diff --git a/ant-design-vue-jeecg/src/components/jeecg/README_JEditableTable.md b/ant-design-vue-jeecg/src/components/jeecg/README_JEditableTable.md new file mode 100644 index 0000000..981422c --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/README_JEditableTable.md @@ -0,0 +1,577 @@ +# JEditableTable 帮助文档 + +## 参数配置 + +| 参数 | 类型 | 必填 | 说明 | +|--------------|---------|------|---------------------------------------------------------------------------------| +| columns | array | ✔️ | 表格列的配置描述,具体项见下表 | +| dataSource | array | ✔️ | 表格数据 | +| loading | boolean | | 是否正在加载,加载中不会显示任何行,默认false | +| actionButton | boolean | | 是否显示操作按钮,包括"新增"、"删除",默认false | +| rowNumber | boolean | | 是否显示行号,默认false | +| rowSelection | boolean | | 是否可选择行,默认false | +| dragSort | boolean | | 是否可拖动排序,默认false | +| dragSortKey | string | | 拖动排序存储的Key,无需定义在columns内也能在getValues()时获取到值,默认orderNum | +| maxHeight | number | | 设定最大高度(px),默认400 | +| disabledRows | object | | 设定禁用的行,被禁用的行无法被选择和编辑,配置方法可以查看示例 | +| disabled | boolean | | 是否禁用所有行,默认false | + +### columns 参数详解 + +| 参数 | 类型 | 必填 | 说明 | +|---------------|---------|------|--------------------------------------------------------------------------------------------------------------------------------------------------------| +| title | string | ✔️ | 表格列头显示的问题 | +| key | string | ✔️ | 列数据在数据项中对应的 key,必须是唯一的 | +| type | string | ✔️ | 表单的类型,可以通过`JEditableTableUtil.FormTypes`赋值 | +| width | string | | 列的宽度,可以是百分比,也可以是`px`或其他单位,建议设置为百分比,且每一列的宽度加起来不应超过100%,否则可能会不能达到预期的效果。留空会自动计算百分比 | +| placeholder | string | | 表单预期值的提示信息,可以使用`${...}`变量替换文本(详见`${...} 变量使用方式`) | +| defaultValue | string | | 默认值,在新增一行时生效 | +| validateRules | array | | 表单验证规则,配置方式见[validateRules 配置规则](#validaterules-配置规则) | +| props | object | | 设置添加给表单元素的自定义属性,例如:`props:{title: 'show title'}` | +| disabled | boolean | | 是否禁用当前列,默认false | + +#### 当 type=checkbox 时所需的参数 + +| 参数 | 类型 | 必填 | 说明 | +|----------------|---------|------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| defaultChecked | boolean | | 默认值是否选中 | +| customValue | array | | 自定义值,checkbox需要的是boolean值,如果数据是其他值(例如`'Y' or 'N'`)时,就会导致错误,所以提供了该属性进行转换,例:`customValue: ['Y','N']`,会将`true`转换为`'Y'`,`false`转换为`'N'`,反之亦然 | + +#### 当 type=select 时所需的参数 + +| 参数 | 类型 | 必填 | 说明 | +|------------|---------|------|----------------------------------------------------| +| options | array | ✔️ | 下拉选项列表,详见下表 | +| allowInput | boolean | | 是否允许用户输入内容,并创建新的内容 | +| dictCode | String | | 数据字典Code,若options也有值,则拼接在options后面 | + +##### options 所需参数 + +| 参数 | 类型 | 必填 | 说明 | +|-----------|------------|------|----------------------------------------------------------------------| +| text | string | ✔️ | 显示标题 | +| value | string | ✔️ | 真实值 | +| ~~title~~ | ~~string~~ | | ~~显示标题(已废弃,若同时填写了 title 和 text 那么优先使用 text)~~ | + +#### 当 type=upload 时所需的参数 + +| 参数 | 类型 | 必填 | 说明 | +|--------------|---------|------|--------------------------------------------------------------------------------------| +| action | string | ✔️ | 上传文件路径 | +| token | boolean | | 上传的时候是否传递token | +| responseName | string | ✔️ | 若要从上传成功后从response中取出返回的文件名,那么这里填后台返回的包含文件名的字段名 | + +#### 当 type=slot 时所需的参数 + +| 参数 | 类型 | 必填 | 说明 | +|----------|--------|------|------------| +| slotName | string | ✔️ | slot的名称 | + +### validateRules 配置规则 + +`validateRules` 需要的是一个数组,数组里每项都是一个规则,规则是object类型,规则的各个参数如下 + +- `required` 是否必填,可选值为`true`or`false` +- `pattern` 正则表达式验证,只有成功匹配该正则的值才能成功通过验证 +- `handler` 自定义函数校验,使用方法请见[示例五](#示例五) +- `message` 当验证未通过时显示的提示文本,可以使用`${...}`变量替换文本(详见`${...} 变量使用方式`) +- 配置示例请看[示例二](#示例二) + +## 事件 + +| 事件名 | 触发时机 | 参数 | +|-----------------|----------------------------------------------------|--------------------------------------------------| +| added | 当添加行操作完成后触发 | | +| deleted | 当删除行操作完成后触发(批量删除操作只会触发一次) | `deleteIds` 被逻辑删除的id | +| selectRowChange | 当行被选中或取消选中时触发 | `selectedRowIds` 被选中行的id | +| valueChange | 当数据发生改变的时候触发的事件 | `{ type, row, column, value, target }` Event对象 | + +## 方法 + +关于方法的如何调用的问题,请在**FAQ**中查看[方法如何调用](#方法如何调用) + +### initialize + +用于初始化表格(清空表格) + +- `参数:` 无 +- `返回值:` 无 + +### resetScrollTop + +重置滚动条Top位置 + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|--------|--------|------|--------------------------------------------------------------------------------------------------------| +| top | number | | 新top位置,留空则滚动到上次记录的位置,用于解决切换tab选项卡时导致白屏以及自动将滚动条滚动到顶部的问题 | + +- `返回值:` 无 + +### add + +主动添加行,默认情况下,当用户的滚动条已经在底部的时候,会将滚动条固定在底部,即添加后无需用户手动滚动,而会自动滚动到底部 + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|---------------------|---------|------|---------------------------------------------------------------------| +| num | number | | 添加几行,默认为1 | +| forceScrollToBottom | boolean | | 是否在添加后无论用户的滚动条在什么位置都强制滚动到底部,默认为false | + +- `返回值:` 无 + +### removeRows + +主动删除一行或多行 + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|--------|-----------------|------|--------------------------------------------------------------------------------------------| +| id | string 或 array | ✔️ | 被删除行的id。如果要删除一个,可以直接传id,如果要删除多个,需要将多个id封装成一个数组传入 | + +- `返回值:` 无 + +### removeSelectedRows + +主动删除被选中的行 + +- `参数:` 无 +- `返回值:` 无 + +### getValues + +用于获取表格里所有表单的值,可进行表单验证 + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|----------|----------|------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| +| callback | function | ✔️ | 获取值的回调方法,会传入`error`和`values`两个参数。`error`:未通过验证的数量,当等于`0`时代表验证通过;`values`:获取的值(即使未通过验证该字段也有数据) | +| validate | boolean | | 是否进行表单验证,默认为`true`,设为`false`则代表忽略表单验证 | +| rowIds | array | | 默认返回所有行的数据,如果传入了`rowIds`,那么就会只返回与该`rowIds`相匹配的数据,如果没有匹配的数据,就会返回空数组 | + +- `返回值:` 无 + + +### getValuesSync + +`getValues`的同步版,会直接将获取到的数据返回 + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|---------|--------|------|------------------------| +| options | object | | 选项,详见下方所需参数 | + +- - `options` 所需参数 + +| 参数名 | 类型 | 必填 | 说明 | +|----------|---------|------|----------------------------------------------------------------------------------------------------------------------| +| validate | boolean | | 是否进行表单验证,默认为`true`,设为`false`则代表忽略表单验证 | +| rowIds | array | | 默认返回所有行的数据,如果传入了`rowIds`,那么就会只返回与该`rowIds`相匹配的数据,如果没有匹配的数据,就会返回空数组 | + +- `返回值:` object + - `error` 未通过验证的数量,当等于`0`时代表验证通过 + - `values` 获取的值(即使未通过验证该字段也有数据) + +- `使用示例` + +```js +let { error, values } = this.$refs.editableTable.getValuesSync({ validate: true, rowIds: ['rowId1', 'rowId2'] }) +if (error === 0) { + console.log('表单验证通过,数据:', values); +} else { + console.log('未通过表单验证,数据:', values); +} +``` + +### getValuesPromise + +`getValues`的promise版,会在`resolve`中传入获取到的值,会在`reject`中传入失败原因,例如`VALIDATE_NO_PASSED` + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|----------|---------|------|----------------------------------------------------------------------------------------------------------------------| +| validate | boolean | | 同`getValues`的`validate`参数 | +| rowIds | array | | 默认返回所有行的数据,如果传入了`rowIds`,那么就会只返回与该`rowIds`相匹配的数据,如果没有匹配的数据,就会返回空数组 | + +- `返回值:` Promise + +### getDeleteIds + +用于获取被逻辑删除的行的id,返回一个数组,用户可将该数组传入后台,并进行批量删除 + +- `参数:` 无 +- `返回值:` array + +### getAll + +获取所有的数据,包括values、deleteIds +会在`resolve`中传入获取到的值:`{values, deleteIds}` +会在`reject`中传入失败原因,例如`VALIDATE_NO_PASSED` + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|----------|---------|------|-------------------------------| +| validate | boolean | | 同`getValues`的`validate`参数 | + +- `返回值:` Promise + +### setValues + +主动设置表格中某行某列的值 + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|--------|-------|------|------------------------------------------------------------| +| values | array | | 传入一个数组,数组中的每项都是一行的新值,具体见下面的示例 | + +- `返回值:` 无 +- `示例:` + +```js +setValues([ + { + rowKey: id1, // 行的id + values: { // 在这里 values 中的 name 是你 columns 中配置的 key + 'name': 'zhangsan', + 'age': '20' + } + }, + { + rowKey: id2, + values: { + 'name': 'lisi', + 'age': '23' + } + } +]) +``` +### clearSelection + +主动清空选择的行 + +- `参数:` 无 +- `返回值:` 无 + +## 内置插槽 + +| 插槽名 | 说明 | +|--------------|------------------------------------------------------| +| buttonBefore | 在操作按钮的**前面**插入插槽,不受`actionButton`属性的影响 | +| buttonAfter | 在操作按钮的**后面**插入插槽,不受`actionButton`属性的影响 | + +## ${...} 变量使用方式 + +在`placeholder`和`message`这两个属性中可以使用`${...}`变量来替换文本 +在[示例二](#示例二)中,配置了`title`为`名称`的一列,而`placeholder`配置成了`请输入${title}`,那么最终显示效果为`请输入名称` +这就是`${...}`变量的使用方式,在`${}`中可以使用的变量有`title`、`key`、`defaultValue`这三个属性的值 + +## JEditableTableUtil 使用说明 + +在之前配置`columns`时提到过`JEditableTableUtil`这个工具类,那么如果想要知道详细的使用说明就请看这里 + +### export 的常量 + +#### FormTypes + +这是配置`columns.type`时用到的常量值,其中包括 + +- `normal` 默认,直接显示值,不渲染表单 +- `input` 显示输入框 +- `inputNumber` 显示数字输入框 +- `checkbox` 显示多选框 +- `select` 显示选择器(下拉框) +- `date` 日期选择器 +- `datetime` 日期时间选择器 +- `upload` 上传组件(文件域) +- `slot` 自定义插槽 + +### VALIDATE_NO_PASSED + +在判断表单验证是否通过时使用,如果 reject 的值 === VALIDATE_NO_PASSED 则代表表单验证未通过,你可以做相应的其他处理,反之则可能是发生了报错,可以使用 `console.error` 输出 + +### 封装的方法 + +#### validateTables + +当你的页面中存在多个JEditableTable实例的时候,如果要获取每个实例的值、判断表单验证是否通过,就会让代码变得极其冗余、繁琐,于是我们就将该操作封装成了一个函数供你调用,它可以同时获取并验证多个JEditableTable实例的值,只有当所有实例的表单验证都通过后才会返回值,否则将会告诉你具体哪个实例没有通过验证。具体使用方法请看下面的示例 + +- `参数:` + +| 参数名 | 类型 | 必填 | 说明 | +|--------|-------|------|--------------------------------------------------------| +| cases | array | | 传入一个数组,数组中的每项都是一个JEditableTable的实例 | + +- `返回值:` Promise +- `示例:` + +```js +import { validateTables, VALIDATE_NO_PASSED } from '@/utils/JEditableTableUtil' +// 封装cases +let cases = [] +cases.push(this.$refs.editableTable1) +cases.push(this.$refs.editableTable2) +cases.push(this.$refs.editableTable3) +cases.push(this.$refs.editableTable4) +cases.push(this.$refs.editableTable5) +// 同时验证并获取多个实例的值 +validateTables(cases).then((all) => { + // all 是一个数组,每项都对应传入cases的下标,包含values和deleteIds + console.log('所有实例的值:', all) +}).catch((e = {}) => { + // 判断表单验证是否未通过 + if (e.error === VALIDATE_NO_PASSED) { + console.log('未通过验证的实例下标:', e.index) + } else { + console.error('发生异常:', e) + } +}) +``` + +## FAQ + +### 方法如何调用? + +在[示例一](#示例一)中,设定了一个 `ref="editableTable"` 的属性,那么在vue中就可以使用`this.$refs.editableTable`获取到该表格的实例,并调取其中的方法。 +假如我要调取`initialize`方法,就可以这么写:`this.$refs.editableTable.initialize()` + +### 如何获取表单的值? + +使用`getValue`方法进行获取,详见[示例三](#示例三) + +### 如何进行表单验证? + +在获取值的时候默认会进行表单验证操作,用户在输入的时候也会对正在输入的表单进行验证,只要配置好规则就可以了 + +### 如何添加或删除一行? + +该功能已封装到组件中,你只需要将 `actionButton` 设置为 `true` 即可,当然你也可以在代码中主动调用新增方法或修改,具体见上方的方法介绍。 + +### 为什么使用了ATab组件后,切换选项卡会导致白屏或滚动条位置会归零? + +在ATab组件中确实会导致滚动条位置归零,且不会触发`onscroll`方法,所以无法动态加载行,导致白屏的问题出现。 +解决方法是在ATab组件的`onChange`事件触发时执行实例提供的`resetScrollTop()`方法即可,但是需要注意的是:代码主动改变ATab的`activeKey`不会触发`onChange`事件,还需要你手动调用下。 + +- `示例` + +```html + +``` + +```js +/*--- 忽略部分代码片段 ---*/ +methods: { + + /** 切换tab选项卡的时候重置editableTable的滚动条状态 */ + handleChangeTab(key) { + this.$refs[`editableTable${key}`].resetScrollTop() + } + +} +/*--- 忽略部分代码片段 ---*/ +``` + +### slot(自定义插槽)如何使用? + +代码示例请看:[示例四(slot)](#示例四(slot)) + +---------------------------------------------------------------------------------------- + +## 示例一 + +```html + +``` + +## 示例二 + +```js + +import { FormTypes } from '@/utils/JEditableTableUtil' + +/*--- 忽略部分代码片断 ---*/ +columns: [ + { + title: '名称', + key: 'name', + type: FormTypes.input, + placeholder: '请输入${title}', + defaultValue: '称名', + // 表单验证规则 + validateRules: [ + { + required: true, // 必填 + message: '${title}不能为空' // 提示的文本 + }, + { + pattern: /^[a-z|A-Z][a-z|A-Z\d_-]{0,}$/, // 正则 + message: '${title}必须以字母开头,可包含数字、下划线、横杠' + } + ] + }, + { + title: '年龄', + key: 'age', + type: FormTypes.inputNumber, + placeholder: '请输入${title}', + defaultValue: 18, + validateRules: [{required: true, message: '${title}不能为空'}] + } +] +/*--- 忽略部分代码片断 ---*/ +``` + +## 示例三 + +```js +// 获取被逻辑删除的字段id +let deleteIds = this.$refs.editableTable.getDeleteIds(); +// 获取所有表单的值,并进行验证 +this.$refs.editableTable.getValues((error, values) => { + // 错误数 = 0 则代表验证通过 + if (error === 0) { + this.$message.success('验证通过') + // 将通过后的数组提交到后台或自行进行其他处理 + console.log(deleteIds, values) + } else { + this.$message.error('验证未通过') + } +}) +``` + +## 示例四(slot) + +```html + + +``` + +## 示例五 + +```js +// 该示例是自定义函数校验 +columns: [ + { + title: '字段名称', + key: 'dbFieldName', + type: FormTypes.input, + defaultValue: '', + validateRules: [ + { + // 自定义函数校验 handler + handler(type, value, row, column, callback, target) { + // type 触发校验的类型(input、change、blur) + // value 当前校验的值 + // callback(flag, message) 方法必须执行且只能执行一次 + // flag = 是否通过了校验,不填写或者填写 null 代表不进行任何操作 + // message = 提示的类型,默认使用配置的 message + // target 行编辑的实例对象 + + if (type === 'blur') { + + if (value === 'abc') { + callback(false, '${title}不能是abc') // false = 未通过,可以跟自定义提示 + return + } + + let { values } = target.getValuesSync({ validate: false }) + let count = 0 + for (let val of values) { + if (val['dbFieldName'] === value) { + if (++count >= 2) { + callback(false, '${title}不能重复') + return + } + } + } + callback(true) // true = 通过验证 + } else { + callback() // 不填写或者填写 null 代表不进行任何操作 + } + }, + message: '${title}默认提示' + } + ] + }, +] +``` \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecg/README_JPopup.md b/ant-design-vue-jeecg/src/components/jeecg/README_JPopup.md new file mode 100644 index 0000000..0b454a6 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/README_JPopup.md @@ -0,0 +1,65 @@ +# JPopup 弹窗选择组件 + +## 参数配置 +| 参数 | 类型 | 必填 |说明| +|--------------|---------|----|---------| +| placeholder |string | | placeholder | +| code |string | | online报表编码 | +| orgFields |string | | online报表中显示的列,多个以逗号隔开 | +| destFields |string | | 回调对象的属性,多个以逗号隔开,其顺序和orgFields一一对应 | +| field |string | | v-model模式专用,表示从destFields中选择一个属性的值返回给当前组件 | +| triggerChange |Boolean | | v-decorator模式下需设置成true | +| callback(事件) |function | | 回调事件,v-decorator模式下用到,用于设置form控件的值 | + +使用示例 +---- +```vue + + + diff --git a/ant-design-vue-jeecg/src/components/jeecg/index.js b/ant-design-vue-jeecg/src/components/jeecg/index.js new file mode 100644 index 0000000..0ee4bb0 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/index.js @@ -0,0 +1,85 @@ +import JModal from './JModal' +import AJModal from './AJModal' +import BJModal from './BJModal' +import CJModal from './CJModal' +import PDFModal from './PDFModal' +import JFormContainer from './JFormContainer.vue' +import JPopup from './JPopup.vue' +import JMarkdownEditor from './JMarkdownEditor' +import JCodeEditor from './JCodeEditor.vue' +import JEditor from './JEditor.vue' +import JEditableTable from './JEditableTable.vue' +import JAreaLinkage from './JAreaLinkage.vue' +import JSuperQuery from './JSuperQuery.vue' +import JUpload from './JUpload.vue' +import JTreeSelect from './JTreeSelect.vue' +import JCategorySelect from './JCategorySelect.vue' +import JImageUpload from './JImageUpload.vue' +import JImportModal from './JImportModal.vue' +import JTreeDict from './JTreeDict.vue' +import JCheckbox from './JCheckbox.vue' +import JCron from './JCron.vue' +import JDate from './JDate.vue' +import JEllipsis from './JEllipsis.vue' +import JInput from './JInput.vue' +import JPopupOnlReport from './modal/JPopupOnlReport.vue' +import JFilePop from './minipop/JFilePop.vue' +import JInputPop from './minipop/JInputPop.vue' +import JSelectMultiple from './JSelectMultiple.vue' +import JSlider from './JSlider.vue' +import JSwitch from './JSwitch.vue' +import JTime from './JTime.vue' +import JTreeTable from './JTreeTable.vue' +import JEasyCron from "@/components/jeecg/JEasyCron"; + +//jeecgbiz +import JSelectDepart from '../jeecgbiz/JSelectDepart.vue' +import JSelectMultiUser from '../jeecgbiz/JSelectMultiUser.vue' +import JSelectPosition from '../jeecgbiz/JSelectPosition.vue' +import JSelectRole from '../jeecgbiz/JSelectRole.vue' +import JSelectUserByDep from '../jeecgbiz/JSelectUserByDep.vue' + +export default { + install(Vue) { + Vue.component('JMarkdownEditor', JMarkdownEditor) + Vue.component(JModal.name, JModal) + Vue.component('AJModal',AJModal) + Vue.component('BJModal',BJModal) + Vue.component('CJModal',CJModal) + Vue.component('PDFModal',PDFModal) + Vue.component('JPopupOnlReport', JPopupOnlReport) + Vue.component('JFilePop', JFilePop) + Vue.component('JInputPop', JInputPop) + Vue.component('JAreaLinkage', JAreaLinkage) + Vue.component('JCategorySelect', JCategorySelect) + Vue.component('JCheckbox', JCheckbox) + Vue.component('JCodeEditor', JCodeEditor) + Vue.component('JCron', JCron) + Vue.component('JDate', JDate) + Vue.component('JEditableTable', JEditableTable) + Vue.component('JEditor', JEditor) + Vue.component('JEllipsis', JEllipsis) + Vue.component('JFormContainer', JFormContainer) + Vue.component('JImageUpload', JImageUpload) + Vue.component('JImportModal', JImportModal) + Vue.component('JInput', JInput) + Vue.component('JPopup', JPopup) + Vue.component('JSelectMultiple', JSelectMultiple) + Vue.component('JSlider', JSlider) + Vue.component('JSuperQuery', JSuperQuery) + Vue.component('JSwitch', JSwitch) + Vue.component('JTime', JTime) + Vue.component('JTreeDict', JTreeDict) + Vue.component('JTreeSelect', JTreeSelect) + Vue.component('JTreeTable', JTreeTable) + Vue.component('JUpload', JUpload) + + //jeecgbiz + Vue.component('JSelectDepart', JSelectDepart) + Vue.component('JSelectMultiUser', JSelectMultiUser) + Vue.component('JSelectPosition', JSelectPosition) + Vue.component('JSelectRole', JSelectRole) + Vue.component('JSelectUserByDep', JSelectUserByDep) + Vue.component(JEasyCron.name, JEasyCron) + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecg/minipop/JFilePop.vue b/ant-design-vue-jeecg/src/components/jeecg/minipop/JFilePop.vue new file mode 100644 index 0000000..0f5350f --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/minipop/JFilePop.vue @@ -0,0 +1,117 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecg/minipop/JInputPop.vue b/ant-design-vue-jeecg/src/components/jeecg/minipop/JInputPop.vue new file mode 100644 index 0000000..1f6a6d7 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/minipop/JInputPop.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecg/modal/JCronModal.vue b/ant-design-vue-jeecg/src/components/jeecg/modal/JCronModal.vue new file mode 100644 index 0000000..2727495 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/modal/JCronModal.vue @@ -0,0 +1,928 @@ + + + + + diff --git a/ant-design-vue-jeecg/src/components/jeecg/modal/JPopupOnlReport.vue b/ant-design-vue-jeecg/src/components/jeecg/modal/JPopupOnlReport.vue new file mode 100644 index 0000000..56ef641 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecg/modal/JPopupOnlReport.vue @@ -0,0 +1,437 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue new file mode 100644 index 0000000..ac181d2 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue @@ -0,0 +1,372 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/JSelectBizQueryItem.js b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/JSelectBizQueryItem.js new file mode 100644 index 0000000..c47df3a --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/JSelectBizQueryItem.js @@ -0,0 +1,48 @@ +export default { + name: 'JSelectBizQueryItem', + props: { + queryParam: Object, + queryConfig: Array, + }, + data() { + return {} + }, + methods: { + renderQueryItem() { + return this.queryConfig.map(queryItem => { + const {key, label, placeholder, dictCode, props, customRender} = queryItem + const options = { + props: {}, + on: { + pressEnter: () => this.$emit('pressEnter'), + } + } + if (props != null) { + Object.assign(options.props, props) + } + if (placeholder === undefined) { + if (dictCode) { + options.props['placeholder'] = `请选择${label}` + } else { + options.props['placeholder'] = `请输入${label}` + } + } else { + options.props['placeholder'] = placeholder + } + + let input + if (typeof customRender === 'function') { + input = customRender.call(this, {key, options, queryParam: this.queryParam}) + } else if (dictCode) { + input = + } else { + input = + } + return {input} + }) + }, + }, + render() { + return {this.renderQueryItem()} + }, +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/README.md b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/README.md new file mode 100644 index 0000000..db53e22 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/README.md @@ -0,0 +1,36 @@ +# JSelectBizComponent + +Jeecg 选择组件的公共可复用组件 + +## 引用方式 + +```js +import JSelectBizComponent from '@/src/components/jeecgbiz/JSelectBizComponent' + +export default { + components: { JSelectBizComponent } +} +``` + +## 参数 + +### 配置参数 + +| 参数名 | 类型 | 必填 | 默认值 | 备注 | +|-----------------------|---------|------|--------------|--------------------------------------------------------------------------------------| +| rowKey | String | | "id" | 唯一标识的字段名 | +| value(v-model) | String | | "" | 默认选择的数据,多个用半角逗号分割 | +| name | String | | "" | 显示名字,例如选择用户就填写"用户" | +| listUrl | String | 是 | | 数据请求地址,必须是封装了分页的地址 | +| valueUrl | String | | "" | 获取显示文本的地址,例如存的是 username,可以通过该地址获取到 realname | +| displayKey | String | | null | 显示在标签上的字段 key ,不传则直接显示数据 | +| returnKeys | Array | | ['id', 'id'] | v-model 绑定的 keys,是个数组,默认使用第二项,当配置了 `returnId=true` 就返回第一项 | +| returnId | Boolean | | false | 返回ID,设为true后将返回配置的 `returnKeys` 中的第一项 | +| selectButtonText | String | | "选择" | 选择按钮的文字 | +| queryParamText | String | | null | 查询条件显示文字,不传则使用 `name` | +| columns | Array | 是 | | 列配置项,与antd的table的配置完全一致。列的第一项会被配置成右侧已选择的列表上 | +| columns[0].widthRight | String | | null | 仅列的第一项可以应用此配置,表示右侧已选择列表的宽度,建议 `70%`,不传则应用`width` | +| placeholder | String | | "请选择" | 占位符 | +| disabled | Boolean | | false | 是否禁用 | +| multiple | Boolean | | false | 是否可多选 | +| buttons | Boolean | | true | 是否显示"选择"按钮,如果不显示,可以直接点击文本框打开选择界面 | diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/index.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/index.vue new file mode 100644 index 0000000..bad850a --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectBizComponent/index.vue @@ -0,0 +1,167 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectDepart.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectDepart.vue new file mode 100644 index 0000000..a8febcc --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectDepart.vue @@ -0,0 +1,159 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectMultiUser.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectMultiUser.vue new file mode 100644 index 0000000..f8609f9 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectMultiUser.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectPosition.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectPosition.vue new file mode 100644 index 0000000..f863f8e --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectPosition.vue @@ -0,0 +1,37 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectRole.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectRole.vue new file mode 100644 index 0000000..90b3d11 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectRole.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectUserByDep.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectUserByDep.vue new file mode 100644 index 0000000..705e96d --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/JSelectUserByDep.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/README.md b/ant-design-vue-jeecg/src/components/jeecgbiz/README.md new file mode 100644 index 0000000..be30730 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/README.md @@ -0,0 +1,137 @@ +# JSelectDepart 部门选择组件 +选择部门组件,存储部门ID,显示部门名称 + +## 参数配置 +| 参数 | 类型 | 必填 |说明| +|--------------|---------|----|---------| +| modalWidth |Number | | 弹框宽度 默认500 | +| multi |Boolean | | 是否多选 默认false | +| rootOpened |Boolean | | 是否展开根节点 默认true | +| disabled |Boolean | | 是否禁用 默认false| + +使用示例 +---- +```vue + + + +``` +# JSelectMultiUser 用户多选组件 + +使用示例 +---- +```vue + + + +``` + +# JSelectUserByDep 根据部门选择用户 + +## 参数配置 +| 参数 | 类型 | 必填 |说明| +|--------------|---------|----|---------| +| modalWidth |Number | | 弹框宽度 默认1250 | +| disabled |Boolean | | 是否禁用 | + +使用示例 +---- +```vue + + + +``` + diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectDepartModal.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectDepartModal.vue new file mode 100644 index 0000000..e62f799 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectDepartModal.vue @@ -0,0 +1,250 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectUserByDepModal.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectUserByDepModal.vue new file mode 100644 index 0000000..e58d1a3 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/modal/JSelectUserByDepModal.vue @@ -0,0 +1,328 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/modal/SelectUserListModal.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/modal/SelectUserListModal.vue new file mode 100644 index 0000000..1da0148 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/modal/SelectUserListModal.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/thirdApp/JThirdAppButton.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/thirdApp/JThirdAppButton.vue new file mode 100644 index 0000000..bdaf249 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/thirdApp/JThirdAppButton.vue @@ -0,0 +1,214 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/jeecgbiz/thirdApp/JThirdAppDropdown.vue b/ant-design-vue-jeecg/src/components/jeecgbiz/thirdApp/JThirdAppDropdown.vue new file mode 100644 index 0000000..22510ff --- /dev/null +++ b/ant-design-vue-jeecg/src/components/jeecgbiz/thirdApp/JThirdAppDropdown.vue @@ -0,0 +1,34 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/BasicLayout.vue b/ant-design-vue-jeecg/src/components/layouts/BasicLayout.vue new file mode 100644 index 0000000..65b40cd --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/BasicLayout.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/BlankLayout.vue b/ant-design-vue-jeecg/src/components/layouts/BlankLayout.vue new file mode 100644 index 0000000..90c0399 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/BlankLayout.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/IframeFReportView.vue b/ant-design-vue-jeecg/src/components/layouts/IframeFReportView.vue new file mode 100644 index 0000000..c51e5b1 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/IframeFReportView.vue @@ -0,0 +1,47 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/IframePageView.vue b/ant-design-vue-jeecg/src/components/layouts/IframePageView.vue new file mode 100644 index 0000000..1770b07 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/IframePageView.vue @@ -0,0 +1,66 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/PageView.vue b/ant-design-vue-jeecg/src/components/layouts/PageView.vue new file mode 100644 index 0000000..fc330a0 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/PageView.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/RouteView.vue b/ant-design-vue-jeecg/src/components/layouts/RouteView.vue new file mode 100644 index 0000000..63f4e66 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/RouteView.vue @@ -0,0 +1,42 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/TabLayout.vue b/ant-design-vue-jeecg/src/components/layouts/TabLayout.vue new file mode 100644 index 0000000..358e961 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/TabLayout.vue @@ -0,0 +1,426 @@ + + + + + diff --git a/ant-design-vue-jeecg/src/components/layouts/UserLayout.vue b/ant-design-vue-jeecg/src/components/layouts/UserLayout.vue new file mode 100644 index 0000000..2c79a21 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/UserLayout.vue @@ -0,0 +1,148 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/layouts/index.js b/ant-design-vue-jeecg/src/components/layouts/index.js new file mode 100644 index 0000000..7cf0f77 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/layouts/index.js @@ -0,0 +1,8 @@ +import UserLayout from '@/components/layouts/UserLayout' +import BlankLayout from '@/components/layouts/BlankLayout' +import BasicLayout from '@/components/layouts/BasicLayout' +import RouteView from '@/components/layouts/RouteView' +import PageView from '@/components/layouts/PageView' +import TabLayout from '@/components/layouts/TabLayout' + +export { UserLayout, BasicLayout, BlankLayout, RouteView, PageView, TabLayout } \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/lazy_antd.js b/ant-design-vue-jeecg/src/components/lazy_antd.js new file mode 100644 index 0000000..f2d0641 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/lazy_antd.js @@ -0,0 +1,126 @@ +/** + * 按需加载antd组件 + */ +import Vue from 'vue' + +// base library +import { + ConfigProvider, + Layout, + Input, + InputNumber, + Button, + Switch, + Radio, + Checkbox, + Select, + Card, + Form, + Row, + Col, + Modal, + Table, + Tabs, + Icon, + Badge, + Popover, + Dropdown, + List, + Avatar, + Breadcrumb, + Steps, + Spin, + Menu, + Drawer, + Tooltip, + Alert, + Tag, + Divider, + DatePicker, + TimePicker, + Upload, + Progress, + Skeleton, + Popconfirm, + PageHeader, + Result, + Statistic, + Descriptions, + message, + notification, + Empty, + Tree, + TreeSelect, + Carousel, + Pagination, + FormModel, + Cascader, + Slider, + Transfer, + Rate, + Collapse, +} from 'ant-design-vue' +import Viser from 'viser-vue' + +Vue.use(ConfigProvider) +Vue.use(Layout) +Vue.use(Input) +Vue.use(InputNumber) +Vue.use(Button) +Vue.use(Switch) +Vue.use(Radio) +Vue.use(Checkbox) +Vue.use(Select) +Vue.use(Card) +Vue.use(Form) +Vue.use(Row) +Vue.use(Col) +Vue.use(Modal) +Vue.use(Table) +Vue.use(Tabs) +Vue.use(Icon) +Vue.use(Badge) +Vue.use(Popover) +Vue.use(Dropdown) +Vue.use(List) +Vue.use(Avatar) +Vue.use(Breadcrumb) +Vue.use(Steps) +Vue.use(Spin) +Vue.use(Menu) +Vue.use(Drawer) +Vue.use(Tooltip) +Vue.use(Alert) +Vue.use(Tag) +Vue.use(Divider) +Vue.use(DatePicker) +Vue.use(TimePicker) +Vue.use(Upload) +Vue.use(Progress) +Vue.use(Skeleton) +Vue.use(Popconfirm) +Vue.use(PageHeader) +Vue.use(Result) +Vue.use(Statistic) +Vue.use(Descriptions) +Vue.use(Empty) +Vue.use(Tree) +Vue.use(TreeSelect) +Vue.use(Carousel) +Vue.use(Pagination) +Vue.use(FormModel) +Vue.use(Cascader) +Vue.use(Slider) +Vue.use(Transfer) +Vue.use(Rate) +Vue.use(Collapse) + +Vue.prototype.$confirm = Modal.confirm +Vue.prototype.$message = message +Vue.prototype.$notification = notification +Vue.prototype.$info = Modal.info +Vue.prototype.$success = Modal.success +Vue.prototype.$error = Modal.error +Vue.prototype.$warning = Modal.warning + +process.env.NODE_ENV !== 'production' && console.warn('[jeecg-boot-vue] NOTICE: Antd use lazy-load.') \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/menu/Contextmenu.vue b/ant-design-vue-jeecg/src/components/menu/Contextmenu.vue new file mode 100644 index 0000000..f88f7b4 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/menu/Contextmenu.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/ant-design-vue-jeecg/src/components/menu/SideMenu.vue b/ant-design-vue-jeecg/src/components/menu/SideMenu.vue new file mode 100644 index 0000000..47166c8 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/menu/SideMenu.vue @@ -0,0 +1,191 @@ + + + + + + + + diff --git a/ant-design-vue-jeecg/src/components/menu/index.js b/ant-design-vue-jeecg/src/components/menu/index.js new file mode 100644 index 0000000..fc2124d --- /dev/null +++ b/ant-design-vue-jeecg/src/components/menu/index.js @@ -0,0 +1,219 @@ +import Menu from 'ant-design-vue/es/menu' +import Icon from 'ant-design-vue/es/icon' + +const { Item, SubMenu } = Menu + +export default { + name: 'SMenu', + props: { + menu: { + type: Array, + required: true + }, + theme: { + type: String, + required: false, + default: 'dark' + }, + mode: { + type: String, + required: false, + default: 'inline' + }, + collapsed: { + type: Boolean, + required: false, + default: false + } + }, + data () { + return { + openKeys: [], + selectedKeys: [], + cachedOpenKeys: [] + } + }, + computed: { + rootSubmenuKeys: vm => { + const keys = [] + vm.menu.forEach(item => keys.push(item.path)) + return keys + } + }, + mounted () { + this.updateMenu() + }, + watch: { + collapsed (val) { + if (val) { + this.cachedOpenKeys = this.openKeys.concat() + this.openKeys = [] + } else { + this.openKeys = this.cachedOpenKeys + } + }, + $route: function () { + this.updateMenu() + } + }, + methods: { + // select menu item + onOpenChange (openKeys) { + + // 在水平模式下时执行,并且不再执行后续 + if (this.mode === 'horizontal') { + this.openKeys = openKeys + return + } + // 非水平模式时 + const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key)) + if (!this.rootSubmenuKeys.includes(latestOpenKey)) { + this.openKeys = openKeys + } else { + this.openKeys = latestOpenKey ? [latestOpenKey] : [] + } + }, + updateMenu () { + const routes = this.$route.matched.concat() + const { hidden } = this.$route.meta + if (routes.length >= 3 && hidden) { + routes.pop() + this.selectedKeys = [routes[routes.length - 1].path] + } else { + this.selectedKeys = [routes.pop().path] + } + let openKeys = [] + if (this.mode === 'inline') { + routes.forEach(item => { + openKeys.push(item.path) + }) + } + + // update-begin-author:sunjianlei date:20210409 for: 修复动态功能测试菜单、带参数菜单标题错误、展开错误的问题 + // 包含冒号的是动态菜单 + if (this.selectedKeys[0].includes(':')) { + let selectedKey = this.$route.fullPath + this.selectedKeys = [selectedKey] + let newOpenKeys = [] + this.fullOpenKeys(this.menu, selectedKey, newOpenKeys) + if (newOpenKeys.length > 0) { + openKeys = newOpenKeys.reverse() + } + } + // update-end-author:sunjianlei date:20210409 for: 修复动态功能测试菜单、带参数菜单标题错误、展开错误的问题 + + //update-begin-author:taoyan date:20190510 for:online表单菜单点击展开的一级目录不对 + if(!this.selectedKeys || this.selectedKeys[0].indexOf(":")<0){ + this.collapsed ? (this.cachedOpenKeys = openKeys) : (this.openKeys = openKeys) + } + //update-end-author:taoyan date:20190510 for:online表单菜单点击展开的一级目录不对 + }, + // update-begin-author:sunjianlei date:20210409 for: 修复动态功能测试菜单、带参数菜单标题错误、展开错误的问题 + // 递归查找当前选中的菜单和父级菜单,填充openKeys + fullOpenKeys(menus, selectedKey, openKeys) { + for (let item of menus) { + if (item.path === selectedKey) { + openKeys.push(item.path) + this.$emit('updateMenuTitle', item) + return true + } else if (Array.isArray(item.children)) { + if (this.fullOpenKeys(item.children, selectedKey, openKeys)) { + openKeys.push(item.path) + return true + } + } + } + }, + // update-end-author:sunjianlei date:20210409 for: 修复动态功能测试菜单、带参数菜单标题错误、展开错误的问题 + + // render + renderItem (menu) { + if (!menu.hidden) { + return menu.children && !menu.alwaysShow ? this.renderSubMenu(menu) : this.renderMenuItem(menu) + } + return null + }, + renderMenuItem (menu) { + const target = menu.meta.target || null + const tag = target && 'a' || 'router-link' + let props = { to: { name: menu.name } } + if(menu.route && menu.route === '0'){ + props = { to: { path: menu.path } } + } + + const attrs = { href: menu.path, target: menu.meta.target } + + if (menu.children && menu.alwaysShow) { + // 把有子菜单的 并且 父菜单是要隐藏子菜单的 + // 都给子菜单增加一个 hidden 属性 + // 用来给刷新页面时, selectedKeys 做控制用 + menu.children.forEach(item => { + item.meta = Object.assign(item.meta, { hidden: true }) + }) + } + + return ( + + + {this.renderIcon(menu.meta.icon)} + {menu.meta.title} + + + ) + }, + renderSubMenu (menu) { + const itemArr = [] + if (!menu.alwaysShow) { + menu.children.forEach(item => itemArr.push(this.renderItem(item))) + } + return ( + + + {this.renderIcon(menu.meta.icon)} + {menu.meta.title} + + {itemArr} + + ) + }, + renderIcon (icon) { + if (icon === 'none' || icon === undefined) { + return null + } + const props = {} + typeof (icon) === 'object' ? props.component = icon : props.type = icon + return ( + + ) + } + }, + + render () { + const { mode, theme, menu } = this + const props = { + mode: mode, + theme: theme, + openKeys: this.openKeys + } + const on = { + select: obj => { + this.selectedKeys = obj.selectedKeys + this.$emit('select', obj) + }, + openChange: this.onOpenChange + } + + const menuTree = menu.map(item => { + if (item.hidden) { + return null + } + return this.renderItem(item) + }) + // {...{ props, on: on }} + return ( + + {menuTree} + + ) + } +} diff --git a/ant-design-vue-jeecg/src/components/page/GlobalFooter.vue b/ant-design-vue-jeecg/src/components/page/GlobalFooter.vue new file mode 100644 index 0000000..24a80ea --- /dev/null +++ b/ant-design-vue-jeecg/src/components/page/GlobalFooter.vue @@ -0,0 +1,46 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/page/GlobalHeader.vue b/ant-design-vue-jeecg/src/components/page/GlobalHeader.vue new file mode 100644 index 0000000..164a93b --- /dev/null +++ b/ant-design-vue-jeecg/src/components/page/GlobalHeader.vue @@ -0,0 +1,229 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/page/GlobalLayout.vue b/ant-design-vue-jeecg/src/components/page/GlobalLayout.vue new file mode 100644 index 0000000..d377b30 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/page/GlobalLayout.vue @@ -0,0 +1,726 @@ + + + + + diff --git a/ant-design-vue-jeecg/src/components/page/PageHeader.vue b/ant-design-vue-jeecg/src/components/page/PageHeader.vue new file mode 100644 index 0000000..f7e86b5 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/page/PageHeader.vue @@ -0,0 +1,238 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/page/PageLayout.vue b/ant-design-vue-jeecg/src/components/page/PageLayout.vue new file mode 100644 index 0000000..191fd8a --- /dev/null +++ b/ant-design-vue-jeecg/src/components/page/PageLayout.vue @@ -0,0 +1,127 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/page/SHeaderNotice.vue b/ant-design-vue-jeecg/src/components/page/SHeaderNotice.vue new file mode 100644 index 0000000..5e874e8 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/page/SHeaderNotice.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/setting/SettingDrawer.vue b/ant-design-vue-jeecg/src/components/setting/SettingDrawer.vue new file mode 100644 index 0000000..79f5e9e --- /dev/null +++ b/ant-design-vue-jeecg/src/components/setting/SettingDrawer.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/ant-design-vue-jeecg/src/components/setting/SettingItem.vue b/ant-design-vue-jeecg/src/components/setting/SettingItem.vue new file mode 100644 index 0000000..de0cbe0 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/setting/SettingItem.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/table/README.md b/ant-design-vue-jeecg/src/components/table/README.md new file mode 100644 index 0000000..ad5f641 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/table/README.md @@ -0,0 +1,292 @@ +Table 重封装组件说明 +==== + + +封装说明 +---- + +> 基础的使用方式与 API 与 [官方版(Table)](https://vuecomponent.github.io/ant-design-vue/components/table-cn/) 本一致,在其基础上,封装了加载数据的方法。 +> +> 你无需在你是用表格的页面进行分页逻辑处理,仅需向 Table 组件传递绑定 `:data="Promise"` 对象即可 + + + +例子1 +---- +(基础使用) + +```vue + + + + + +``` + + + +例子2 +---- + +(简单的表格,最后一列是各种操作) + +```vue + + + +``` + + + +内置方法 +---- + +通过 `this.$refs.table` 调用 + +`this.$refs.table.refresh()` 刷新列表 (用户新增/修改数据后,重载列表数据) + +> 注意:要调用 `refresh()` 需要给表格组件设定 `ref` 值 + + + +注意事项 +---- + +> 你可能需要为了与后端提供的接口返回结果一致而去修改以下代码: +(需要注意的是,这里的修改是全局性的,意味着整个项目所有使用该 table 组件都需要遵守这个返回结果定义的字段。) + +修改 `@/components/table/index.js` 第 106 行起 + + + +```javascript +result.then(r => { + this.localPagination = Object.assign({}, this.localPagination, { + current: r.pageNo, // 返回结果中的当前分页数 + total: r.totalCount, // 返回结果中的总记录数 + showSizeChanger: this.showSizeChanger, + pageSize: (pagination && pagination.pageSize) || + this.localPagination.pageSize + }); + + !r.totalCount && ['auto', false].includes(this.showPagination) && (this.localPagination = false) + this.localDataSource = r.data; // 返回结果中的数组数据 + this.localLoading = false +}); +``` +返回 JSON 例子: +```json +{ + "message": "", + "result": { + "data": [{ + id: 1, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', + title: 'Alipay', + description: '那是一种内在的东西, 他们到达不了,也无法触及的', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 2, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', + title: 'Angular', + description: '希望是一个好东西,也许是最好的,好东西是不会消亡的', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 3, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', + title: 'Ant Design', + description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 4, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', + title: 'Ant Design Pro', + description: '那时候我只会想自己想要什么,从不想自己拥有什么', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 5, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', + title: 'Bootstrap', + description: '凛冬将至', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 6, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', + title: 'Vue', + description: '生命就像一盒巧克力,结果往往出人意料', + status: 1, + updatedAt: '2018-07-26 00:00:00' + } + ], + "pageSize": 10, + "pageNo": 0, + "totalPage": 6, + "totalCount": 57 + }, + "status": 200, + "timestamp": 1534955098193 +} +``` + + + +更新时间 +---- + +该文档最后更新于: 2018-10-31 PM 08:15 \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/table/StandardTable.vue b/ant-design-vue-jeecg/src/components/table/StandardTable.vue new file mode 100644 index 0000000..bc6044a --- /dev/null +++ b/ant-design-vue-jeecg/src/components/table/StandardTable.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/table/index.js b/ant-design-vue-jeecg/src/components/table/index.js new file mode 100644 index 0000000..ffb6511 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/table/index.js @@ -0,0 +1,269 @@ +import T from "ant-design-vue/es/table/Table"; +import get from "lodash.get" +export default { + data() { + return { + needTotalList: [], + + selectedRows: [], + selectedRowKeys: [], + + localLoading: false, + localDataSource: [], + localPagination: Object.assign({}, T.props.pagination) + }; + }, + props: Object.assign({}, T.props, { + rowKey: { + type: [String, Function], + default: 'id' + }, + data: { + type: Function, + required: true + }, + pageNum: { + type: Number, + default: 1 + }, + pageSize: { + type: Number, + default: 10 + }, + showSizeChanger: { + type: Boolean, + default: true + }, + showAlertInfo: { + type: Boolean, + default: false + }, + showPagination: { + default: 'auto' + } + }), + watch: { + 'localPagination.current'(val) { + this.$router.push({ + name: this.$route.name, + params: Object.assign({}, this.$route.params, { + pageNo: val + }), + }); + }, + pageNum(val) { + Object.assign(this.localPagination, { + current: val + }); + }, + pageSize(val) { + console.log('pageSize:', val) + Object.assign(this.localPagination, { + pageSize: val + }); + }, + showSizeChanger(val) { + console.log('showSizeChanger', val) + Object.assign(this.localPagination, { + showSizeChanger: val + }); + } + }, + created() { + this.localPagination = ['auto', true].includes(this.showPagination) && Object.assign({}, this.localPagination, { + current: this.pageNum, + pageSize: this.pageSize, + showSizeChanger: this.showSizeChanger + }); + this.needTotalList = this.initTotalList(this.columns) + this.loadData(); + }, + methods: { + refresh() { + this.loadData(); + }, + loadData(pagination, filters, sorter) { + + this.localLoading = true + var result = this.data( + Object.assign({ + pageNo: (pagination && pagination.current) || + this.localPagination.current, + pageSize: (pagination && pagination.pageSize) || + this.localPagination.pageSize + }, + (sorter && sorter.field && { + sortField: sorter.field + }) || {}, + (sorter && sorter.order && { + sortOrder: sorter.order + }) || {}, { + ...filters + } + ) + ); + + if (result instanceof Promise) { + result.then(r => { + this.localPagination = Object.assign({}, this.localPagination, { + current: r.pageNo, // 返回结果中的当前分页数 + total: r.totalCount, // 返回结果中的总记录数 + showSizeChanger: this.showSizeChanger, + pageSize: (pagination && pagination.pageSize) || + this.localPagination.pageSize + }); + //update--begin--autor:wangshuai-----date:20200724------for:判断showPagination是否为false------ + (!this.showPagination || !r.totalCount && this.showPagination === 'auto') && (this.localPagination = false) + //update--end--autor:wangshuai-----date:20200724------for:判断showPagination是否为false----- + this.localDataSource = r.data; // 返回结果中的数组数据 + this.localLoading = false + }); + } + }, + initTotalList(columns) { + const totalList = [] + columns && columns instanceof Array && columns.forEach(column => { + if (column.needTotal) { + totalList.push({ ...column, + total: 0 + }) + } + }) + return totalList + }, + updateSelect(selectedRowKeys, selectedRows) { + this.selectedRowKeys = selectedRowKeys + this.selectedRows = selectedRows + let list = this.needTotalList + this.needTotalList = list.map(item => { + return { + ...item, + total: selectedRows.reduce((sum, val) => { + let total = sum + get(val, item.dataIndex) + return isNaN(total) ? 0 : total + }, 0) + } + }) + // this.$emit('change', selectedRowKeys, selectedRows) + }, + updateEdit() { + this.selectedRows = [] + }, + onClearSelected() { + // 【TESTA-262】页面清空后还能才做所选行,增加 this.$emit('clearAll') + this.selectedRowKeys = [] + this.selectedRows = [] + this.updateSelect([], []) + this.$emit('clearAll') + }, + renderMsg(h) { + const _vm = this + let d = [] + // 构建 已选择 + d.push( + h('span', { + style: { + marginRight: '12px' + } + }, ['已选择 ', h('a', { + style: { + fontWeight: 600 + } + }, this.selectedRows.length)]) + ); + + // 构建 列统计 + this.needTotalList.map(item => { + d.push(h('span', { + style: { + marginRight: '12px' + } + }, + [ + `${ item.title }总计 `, + h('a', { + style: { + fontWeight: 600 + } + }, `${ !item.customRender ? item.total : item.customRender(item.total) }`) + ])) + }); + + // 构建 清空选择 + d.push(h('a', { + style: { + marginLeft: '24px' + }, + on: { + click: _vm.onClearSelected + } + }, '清空')) + + return d + }, + renderAlert(h) { + return h('span', { + slot: 'message' + }, this.renderMsg(h)) + }, + }, + + render(h) { + const _vm = this + + let props = {}, + localKeys = Object.keys(this.$data); + + Object.keys(T.props).forEach(k => { + let localKey = `local${k.substring(0,1).toUpperCase()}${k.substring(1)}`; + if (localKeys.includes(localKey)) { + return props[k] = _vm[localKey]; + } + return props[k] = _vm[k]; + }) + + + // 显示信息提示 + if (this.showAlertInfo) { + + props.rowSelection = { + selectedRowKeys: this.selectedRowKeys, + onChange: (selectedRowKeys, selectedRows) => { + _vm.updateSelect(selectedRowKeys, selectedRows) + _vm.$emit('onSelect', { selectedRowKeys: selectedRowKeys, selectedRows: selectedRows }) + } + }; + + return h('div', {}, [ + h("a-alert", { + style: { + marginBottom: '16px' + }, + props: { + type: 'info', + showIcon: true + } + }, [_vm.renderAlert(h)]), + h("a-table", { + tag: "component", + attrs: props, + on: { + change: _vm.loadData + }, + scopedSlots: this.$scopedSlots + }, this.$slots.default) + ]); + + } + + return h("a-table", { + tag: "component", + attrs: props, + on: { + change: _vm.loadData + }, + scopedSlots: this.$scopedSlots + }, this.$slots.default); + + } +}; \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/Breadcrumb.vue b/ant-design-vue-jeecg/src/components/tools/Breadcrumb.vue new file mode 100644 index 0000000..3bd067f --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/Breadcrumb.vue @@ -0,0 +1,48 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/DepartSelect.vue b/ant-design-vue-jeecg/src/components/tools/DepartSelect.vue new file mode 100644 index 0000000..7a7e15a --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/DepartSelect.vue @@ -0,0 +1,162 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/DetailList.vue b/ant-design-vue-jeecg/src/components/tools/DetailList.vue new file mode 100644 index 0000000..bd74971 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/DetailList.vue @@ -0,0 +1,147 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/DynamicNotice.vue b/ant-design-vue-jeecg/src/components/tools/DynamicNotice.vue new file mode 100644 index 0000000..02cb7fc --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/DynamicNotice.vue @@ -0,0 +1,36 @@ + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/FooterToolBar.vue b/ant-design-vue-jeecg/src/components/tools/FooterToolBar.vue new file mode 100644 index 0000000..63b3c1b --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/FooterToolBar.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/HeadInfo.vue b/ant-design-vue-jeecg/src/components/tools/HeadInfo.vue new file mode 100644 index 0000000..f4f6bbc --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/HeadInfo.vue @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/HeaderNotice.vue b/ant-design-vue-jeecg/src/components/tools/HeaderNotice.vue new file mode 100644 index 0000000..1d15db9 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/HeaderNotice.vue @@ -0,0 +1,337 @@ + + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/Logo.vue b/ant-design-vue-jeecg/src/components/tools/Logo.vue new file mode 100644 index 0000000..6c06bf5 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/Logo.vue @@ -0,0 +1,65 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/ShowAnnouncement.vue b/ant-design-vue-jeecg/src/components/tools/ShowAnnouncement.vue new file mode 100644 index 0000000..b2c6d88 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/ShowAnnouncement.vue @@ -0,0 +1,139 @@ + + + + + + diff --git a/ant-design-vue-jeecg/src/components/tools/TwoStepCaptcha.vue b/ant-design-vue-jeecg/src/components/tools/TwoStepCaptcha.vue new file mode 100644 index 0000000..8b4c94d --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/TwoStepCaptcha.vue @@ -0,0 +1,89 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/UserMenu.vue b/ant-design-vue-jeecg/src/components/tools/UserMenu.vue new file mode 100644 index 0000000..55dc349 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/UserMenu.vue @@ -0,0 +1,241 @@ + + + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/components/tools/UserPassword.vue b/ant-design-vue-jeecg/src/components/tools/UserPassword.vue new file mode 100644 index 0000000..ff16648 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/UserPassword.vue @@ -0,0 +1,157 @@ + + + + + + diff --git a/ant-design-vue-jeecg/src/components/tools/setting.js b/ant-design-vue-jeecg/src/components/tools/setting.js new file mode 100644 index 0000000..fdfc396 --- /dev/null +++ b/ant-design-vue-jeecg/src/components/tools/setting.js @@ -0,0 +1,95 @@ +import { message } from 'ant-design-vue/es'; +// import defaultSettings from '../defaultSettings'; + +let lessNodesAppended; + +const colorList = [ + { + key: '薄暮', color: '#F5222D', + }, + { + key: '火山', color: '#FA541C', + }, + { + key: '日暮', color: '#FAAD14', + }, + { + key: '明青', color: '#13C2C2', + }, + { + key: '极光绿', color: '#52C41A', + }, + { + key: '拂晓蓝(默认)', color: '#1890FF', + }, + { + key: '极客蓝', color: '#2F54EB', + }, + { + key: '酱紫', color: '#722ED1', + }, +]; + +const updateTheme = primaryColor => { + // Don't compile less in production! + /* if (process.env.NODE_ENV === 'production') { + return; + } */ + // Determine if the component is remounted + if (!primaryColor) { + return; + } + const hideMessage = message.loading('正在编译主题!', 0); + console.info(`正在编译主题!`) + function buildIt() { + // 正确的判定less是否已经加载less.modifyVars可用 + if (!window.less || !window.less.modifyVars) { + return; + } + // less.modifyVars可用 + window.less.modifyVars({ + '@primary-color': primaryColor, + }) + .then(() => { + hideMessage(); + }) + .catch(() => { + message.error('Failed to update theme'); + hideMessage(); + }); + } + if (!lessNodesAppended) { + // insert less.js and color.less + const lessStyleNode = document.createElement('link'); + const lessConfigNode = document.createElement('script'); + const lessScriptNode = document.createElement('script'); + lessStyleNode.setAttribute('rel', 'stylesheet/less'); + lessStyleNode.setAttribute('href', __webpack_public_path__ + 'color.less') + lessConfigNode.innerHTML = ` + window.less = { + async: true, + env: 'production', + javascriptEnabled: true + }; + `; + lessScriptNode.src = 'https://gw.alipayobjects.com/os/lib/less.js/3.8.1/less.min.js'; + lessScriptNode.async = true; + lessScriptNode.onload = () => { + buildIt(); + lessScriptNode.onload = null; + }; + document.body.appendChild(lessStyleNode); + document.body.appendChild(lessConfigNode); + document.body.appendChild(lessScriptNode); + lessNodesAppended = true; + } else { + buildIt(); + } +}; + +const updateColorWeak = colorWeak => { + // document.body.className = colorWeak ? 'colorWeak' : ''; + colorWeak ? document.body.classList.add('colorWeak') : document.body.classList.remove('colorWeak') +}; + +export { updateTheme, colorList, updateColorWeak } \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/config/index.js b/ant-design-vue-jeecg/src/config/index.js new file mode 100644 index 0000000..5625291 --- /dev/null +++ b/ant-design-vue-jeecg/src/config/index.js @@ -0,0 +1,10 @@ +/** init domain config */ +import Vue from 'vue' +//设置全局API_BASE_URL +Vue.prototype.API_BASE_URL = process.env.VUE_APP_API_BASE_URL +window._CONFIG['domianURL'] = Vue.prototype.API_BASE_URL +//单点登录地址 +window._CONFIG['casPrefixUrl'] = process.env.VUE_APP_CAS_BASE_URL +window._CONFIG['onlinePreviewDomainURL'] = process.env.VUE_APP_ONLINE_BASE_URL +window._CONFIG['staticDomainURL'] = Vue.prototype.API_BASE_URL + '/sys/common/static' +window._CONFIG['pdfDomainURL'] = Vue.prototype.API_BASE_URL+ '/sys/common/pdf/pdfPreviewIframe' diff --git a/ant-design-vue-jeecg/src/config/router.config.js b/ant-design-vue-jeecg/src/config/router.config.js new file mode 100644 index 0000000..d9767cf --- /dev/null +++ b/ant-design-vue-jeecg/src/config/router.config.js @@ -0,0 +1,75 @@ +import { UserLayout, TabLayout, RouteView, BlankLayout, PageView } from '@/components/layouts' + +/** + * 走菜单,走权限控制 + * @type {[null,null]} + */ +export const asyncRouterMap = [ + + { + path: '/', + name: 'defaultDocSearch', + component: TabLayout, + meta: { title: '首页' }, + redirect: '/defaultDocSearch', + // redirect: '/dashboard/analysis', + children: [ + ] + }, + { + path: '*', redirect: '/404', hidden: true + } +] + +/** + * 基础路由 + * @type { *[] } + */ +export const constantRouterMap = [ + { + path: '/user', + component: UserLayout, + redirect: '/user/login', + hidden: true, + children: [ + { + path: 'login', + name: 'login', + component: () => import(/* webpackChunkName: "user" */ '@/views/user/Login') + }, + ] + }, + { + path: '/404', + component: () => import(/* webpackChunkName: "fail" */ '@/views/exception/404') + }, + { + path: '/defaultDocSearch', + name:'defaultDocSearch', + meta: { title: '首页' }, + component: () => import('@/views/km/search/DefaultDocSearch') + }, + { + path:'/advancedSearch', + name:'advancedSearch', + meta: { title: '高级检索' }, + component: () => import('@/views/km/search/AdvancedSearch') + }, + { + path:'/docSearch', + name:'docSearch', + meta: { title: '检索结果' }, + component: () => import('@/views/km/search/DocSearch') + }, + { + path:'/RecommendTopicList', + name:'recommendTopicList', + meta: { title: '知识专题' }, + component: () => import('@/views/km/search/RecommendTopicList') + }, + { + path:'/login', + component: () => import('@/views/km/search/Login') + } + +] diff --git a/ant-design-vue-jeecg/src/defaultSettings.js b/ant-design-vue-jeecg/src/defaultSettings.js new file mode 100644 index 0000000..8427058 --- /dev/null +++ b/ant-design-vue-jeecg/src/defaultSettings.js @@ -0,0 +1,32 @@ +/** + * 项目默认配置项 + * primaryColor - 默认主题色 + * navTheme - sidebar theme ['dark', 'light'] 两种主题 + * colorWeak - 色盲模式 + * layout - 整体布局方式 ['sidemenu', 'topmenu'] 两种布局 + * fixedHeader - 固定 Header : boolean + * fixSiderbar - 固定左侧菜单栏 : boolean + * autoHideHeader - 向下滚动时,隐藏 Header : boolean + * contentWidth - 内容区布局: 流式 | 固定 + * + * storageOptions: {} - Vue-ls 插件配置项 (localStorage/sessionStorage) + * + */ + +export default { + primaryColor: '#1890FF', // primary color of ant design + navTheme: 'light', // theme for nav menu + layout: 'sidemenu', // nav menu position: sidemenu or topmenu + contentWidth: 'Fixed', // layout of content: Fluid or Fixed, only works when layout is topmenu + fixedHeader: false, // sticky header + fixSiderbar: false, // sticky siderbar + autoHideHeader: false, // auto hide header + colorWeak: false, + multipage: false, //默认多页签模式 + // vue-ls options + storageOptions: { + namespace: 'pro__', // key prefix + name: 'ls', // name variable Vue.[ls] or this.[$ls], + storage: 'local', // storage name session, local, memory + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/icons.js b/ant-design-vue-jeecg/src/icons.js new file mode 100644 index 0000000..7c62954 --- /dev/null +++ b/ant-design-vue-jeecg/src/icons.js @@ -0,0 +1,15 @@ +// src/icons.js + +// export what you need +export { + default as SmileOutline +} from '@ant-design/icons/lib/outline/SmileOutline'; +export { + default as MehOutline +} from '@ant-design/icons/lib/outline/MehOutline'; + +// export what antd other components need +export { + default as CloseOutline +} from '@ant-design/icons/lib/outline/CloseOutline'; +// and other icons... \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/main.js b/ant-design-vue-jeecg/src/main.js new file mode 100644 index 0000000..108922a --- /dev/null +++ b/ant-design-vue-jeecg/src/main.js @@ -0,0 +1,87 @@ +/** init domain config */ +import './config' + +import Vue from 'vue' +import App from './App.vue' +import Storage from 'vue-ls' +import router from './router' +import store from './store/' +import { VueAxios } from "@/utils/request" + +require('@jeecg/antd-online-mini') +require('@jeecg/antd-online-mini/dist/OnlineForm.css') + +import Antd, { version } from 'ant-design-vue' +console.log('ant-design-vue version:', version) + +import Viser from 'viser-vue' +import 'ant-design-vue/dist/antd.less'; // or 'ant-design-vue/dist/antd.less' + +import '@/permission' // permission control +import '@/utils/filter' // base filter +import Print from 'vue-print-nb-jeecg' +import preview from 'vue-photo-preview' +import 'vue-photo-preview/dist/skin.css' +import SSO from '@/cas/sso.js' +import { + ACCESS_TOKEN, + DEFAULT_COLOR, + DEFAULT_THEME, + DEFAULT_LAYOUT_MODE, + DEFAULT_COLOR_WEAK, + SIDEBAR_TYPE, + DEFAULT_FIXED_HEADER, + DEFAULT_FIXED_HEADER_HIDDEN, + DEFAULT_FIXED_SIDEMENU, + DEFAULT_CONTENT_WIDTH_TYPE, + DEFAULT_MULTI_PAGE +} from "@/store/mutation-types" +import config from '@/defaultSettings' + +import JDictSelectTag from './components/dict/index.js' +import hasPermission from '@/utils/hasPermission' +import vueBus from '@/utils/vueBus'; +import JeecgComponents from '@/components/jeecg/index' +import '@/assets/less/JAreaLinkage.less' +import VueAreaLinkage from 'vue-area-linkage' +import '@/components/jeecg/JVxeTable/install' +import '@/components/JVxeCells/install' +//表单验证 +import { rules } from '@/utils/rules' +Vue.prototype.rules = rules +Vue.config.productionTip = false +Vue.use(Storage, config.storageOptions) +Vue.use(Antd) +Vue.use(VueAxios, router) +Vue.use(Viser) +Vue.use(hasPermission) +Vue.use(JDictSelectTag) +Vue.use(Print) +Vue.use(preview) +Vue.use(vueBus); +Vue.use(JeecgComponents); +Vue.use(VueAreaLinkage); + +SSO.init(() => { + main() +}) +function main() { + new Vue({ + router, + store, + mounted () { + store.commit('SET_SIDEBAR_TYPE', Vue.ls.get(SIDEBAR_TYPE, true)) + store.commit('TOGGLE_THEME', Vue.ls.get(DEFAULT_THEME, config.navTheme)) + store.commit('TOGGLE_LAYOUT_MODE', Vue.ls.get(DEFAULT_LAYOUT_MODE, config.layout)) + store.commit('TOGGLE_FIXED_HEADER', Vue.ls.get(DEFAULT_FIXED_HEADER, config.fixedHeader)) + store.commit('TOGGLE_FIXED_SIDERBAR', Vue.ls.get(DEFAULT_FIXED_SIDEMENU, config.fixSiderbar)) + store.commit('TOGGLE_CONTENT_WIDTH', Vue.ls.get(DEFAULT_CONTENT_WIDTH_TYPE, config.contentWidth)) + store.commit('TOGGLE_FIXED_HEADER_HIDDEN', Vue.ls.get(DEFAULT_FIXED_HEADER_HIDDEN, config.autoHideHeader)) + store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak)) + store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor)) + store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN)) + store.commit('SET_MULTI_PAGE',Vue.ls.get(DEFAULT_MULTI_PAGE,config.multipage)) + }, + render: h => h(App) + }).$mount('#app') +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/AJeecgListMixin.js b/ant-design-vue-jeecg/src/mixins/AJeecgListMixin.js new file mode 100644 index 0000000..11987a7 --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/AJeecgListMixin.js @@ -0,0 +1,502 @@ +/** + * 新增修改完成调用 modalFormOk方法 编辑弹框组件ref定义为modalForm + * 高级查询按钮调用 superQuery方法 高级查询组件ref定义为superQueryModal + * data中url定义 list为查询列表 delete为删除单条记录 deleteBatch为批量删除 + */ +import { filterObj } from '@/utils/util'; +import { deleteAction, getAction,downFile,getFileAccessHttpUrl } from '@/api/manage' +import Vue from 'vue' +import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types" +import store from '@/store' +import {Modal} from 'ant-design-vue' +import {httpAction, httpPostAction} from "../api/manage"; + +export const AJeecgListMixin = { + data(){ + return { + /* 查询条件-请不要在queryParam中声明非字符串值的属性 */ + queryParam: {}, + /* 数据源 */ + dataSource:[], + /* 分页参数 */ + ipagination:{ + current: 1, + pageSize: 10, + pageSizeOptions: ['10', '20', '30'], + showTotal: (total, range) => { + return range[0] + "-" + range[1] + " 共" + total + "条" + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + /* 排序参数 */ + isorter:{ + column: 'createTime', + order: 'desc', + }, + /* 筛选参数 */ + filters: {}, + /* table加载状态 */ + loading:false, + /* table选中keys*/ + selectedRowKeys: [], + /* table选中records*/ + selectionRows: [], + /* 查询折叠 */ + toggleSearchStatus:false, + /* 高级查询条件生效状态 */ + superQueryFlag:false, + /* 高级查询条件 */ + superQueryParams: '', + /** 高级查询拼接方式 */ + superQueryMatchType: 'and', + } + }, + created() { + if(!this.disableMixinCreated){ + //初始化字典配置 在自己页面定义 + this.initDictConfig(); + } + }, + computed: { + //token header + tokenHeader(){ + let head = {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)} + let tenantid = Vue.ls.get(TENANT_ID) + if(tenantid){ + head['tenant-id'] = tenantid + } + return head; + } + }, + methods:{ + + initDictConfig(){ + console.log("--这是一个假的方法!") + }, + handleSuperQuery(params, matchType) { + //高级查询方法 + if(!params){ + this.superQueryParams='' + this.superQueryFlag = false + }else{ + this.superQueryFlag = true + this.superQueryParams=JSON.stringify(params) + this.superQueryMatchType = matchType + } + this.loadData(1) + }, + getQueryParams() { + //获取查询条件 + let sqp = {} + if(this.superQueryParams){ + sqp['superQueryParams']=encodeURI(this.superQueryParams) + sqp['superQueryMatchType'] = this.superQueryMatchType + } + var param = Object.assign(sqp, this.queryParam, this.isorter ,this.filters); + param.field = this.getQueryField(); + param.pageNo = this.ipagination.current; + param.pageSize = this.ipagination.pageSize; + return filterObj(param); + }, + getQueryField() { + //TODO 字段权限控制 + var str = "id,"; + this.columns.forEach(function (value) { + str += "," + value.dataIndex; + }); + return str; + }, + + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + }, + onClearSelected() { + this.selectedRowKeys = []; + this.selectionRows = []; + }, + searchQuery() { + this.loadData(1); + }, + superQuery() { + this.$refs.superQueryModal.show(); + }, + searchReset() { + this.queryParam = {} + this.loadData(1); + }, + batchDel: function () { + if(!this.url.deleteBatch){ + this.$message.error("请设置url.deleteBatch属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认删除", + content: "是否删除选中数据?", + onOk: function () { + that.loading = true; + deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + batchEdit: function () { + if(!this.url.editBatch){ + this.$message.error("请设置url.editBatch属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认提审", + content: "是否提审选中数据?", + onOk: function () { + that.loading = true; + httpPostAction(that.url.editBatch, {ids: ids},'put').then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + + batchAuditPass:function () { + if(!this.url.batchAuditPass){ + this.$message.error("请设置url.batchAuditPass属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认通过", + content: "是否通过选中数据?", + onOk: function () { + that.loading = true; + httpPostAction(that.url.batchAuditPass, {ids: ids},"put").then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + + batchAuditReject:function () { + if(!this.url.batchAuditReject){ + this.$message.error("请设置url.batchAuditReject属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认拒绝", + content: "是否拒绝选中数据?", + onOk: function () { + that.loading = true; + httpPostAction(that.url.batchAuditReject, {ids: ids},'put').then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + + + + handleDelete: function (id) { + if(!this.url.delete){ + this.$message.error("请设置url.delete属性!") + return + } + var that = this; + deleteAction(that.url.delete, {id: id}).then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(1) + that.$message.success(res.message); + that.loadData(); + } else { + that.$message.warning(res.message); + } + }); + }, + + + + + reCalculatePage(count){ + //总数量-count + let total=this.ipagination.total-count; + //获取删除后的分页数 + let currentIndex=Math.ceil(total/this.ipagination.pageSize); + //删除后的分页数<所在当前页 + if(currentIndex 0){ + let filterFields = Object.keys(filters); + for (var i = 0; i 0) + filterValueString = filterValueString + ','; + + filterValueString = filterValueString + filterValues[j]; + } + + Object.defineProperty(this.filters,filterField, { + value:filterValueString, + enumerable: true, + configurable: true, + writable:true + }); + + // Object.defineProperty(this.filters,filterField, { + // get: function () { + // return filterValueString + // }, + // set: function(val){ + // Object.defineProperty(this.filters,filterField,val) + // }, + // enumerable: true, + // configurable: true + // }); + } + } + console.log(pagination) + if (Object.keys(sorter).length > 0) { + this.isorter.column = sorter.field; + this.isorter.order = "ascend" == sorter.order ? "asc" : "desc" + } + this.ipagination = pagination; + this.loadData(); + }, + handleToggleSearch(){ + this.toggleSearchStatus = !this.toggleSearchStatus; + }, + // 给popup查询使用(查询区域不支持回填多个字段,限制只返回一个字段) + getPopupField(fields){ + return fields.split(',')[0] + }, + modalFormOk() { + // 新增/修改 成功时,重载列表 + this.loadData(); + //清空列表选中 + this.onClearSelected() + }, + handleDetail:function(record){ + this.$refs.modalForm.edit(record); + this.$refs.modalForm.title="详情"; + this.$refs.modalForm.disableSubmit = true; + }, + /* 导出 */ + handleExportXls2(){ + let paramsStr = encodeURI(JSON.stringify(this.getQueryParams())); + let url = `${window._CONFIG['domianURL']}/${this.url.exportXlsUrl}?paramsStr=${paramsStr}`; + window.location.href = url; + }, + handleExportXls(fileName){ + if(!fileName || typeof fileName != "string"){ + fileName = "导出文件" + } + let param = this.getQueryParams(); + if(this.selectedRowKeys && this.selectedRowKeys.length>0){ + param['selections'] = this.selectedRowKeys.join(",") + } + console.log("导出参数",param) + downFile(this.url.exportXlsUrl,param).then((data)=>{ + if (!data) { + this.$message.warning("文件下载失败") + return + } + if (typeof window.navigator.msSaveBlob !== 'undefined') { + window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls') + }else{ + let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'})) + let link = document.createElement('a') + link.style.display = 'none' + link.href = url + link.setAttribute('download', fileName+'.xls') + document.body.appendChild(link) + link.click() + document.body.removeChild(link); //下载完成移除元素 + window.URL.revokeObjectURL(url); //释放掉blob对象 + } + }) + }, + /* 导入 */ + handleImportExcel(info){ + if (info.file.status !== 'uploading') { + console.log(info.file, info.fileList); + } + if (info.file.status === 'done') { + if (info.file.response.success) { + // this.$message.success(`${info.file.name} 文件上传成功`); + if (info.file.response.code === 201) { + let { message, result: { msg, fileUrl, fileName } } = info.file.response + let href = window._CONFIG['domianURL'] + fileUrl + this.$warning({ + title: message, + content: (
+ {msg}
+ 具体详情请 点击下载 +
+ ) + }) + } else { + this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`) + } + this.loadData() + } else { + this.$message.error(`${info.file.name} ${info.file.response.message}.`); + } + } else if (info.file.status === 'error') { + if (info.file.response.status === 500) { + let data = info.file.response + const token = Vue.ls.get(ACCESS_TOKEN) + if (token && data.message.includes("Token失效")) { + Modal.error({ + title: '登录已过期', + content: '很抱歉,登录已过期,请重新登录', + okText: '重新登录', + mask: false, + onOk: () => { + store.dispatch('Logout').then(() => { + Vue.ls.remove(ACCESS_TOKEN) + window.location.reload(); + }) + } + }) + } + } else { + this.$message.error(`文件上传失败: ${info.file.msg} `); + } + } + }, + /* 图片预览 */ + getImgView(text){ + if(text && text.indexOf(",")>0){ + text = text.substring(0,text.indexOf(",")) + } + return getFileAccessHttpUrl(text) + }, + /* 文件下载 */ + // update--autor:lvdandan-----date:20200630------for:修改下载文件方法名uploadFile改为downloadFile------ + downloadFile(text){ + if(!text){ + this.$message.warning("未知的文件") + return; + } + if(text.indexOf(",")>0){ + text = text.substring(0,text.indexOf(",")) + } + let url = getFileAccessHttpUrl(text) + window.open(url); + }, + } + +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/DisabledAuthFilterMixin.js b/ant-design-vue-jeecg/src/mixins/DisabledAuthFilterMixin.js new file mode 100644 index 0000000..26aca74 --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/DisabledAuthFilterMixin.js @@ -0,0 +1,19 @@ +/** + * + */ +import { disabledAuthFilter } from "@/utils/authFilter" + +export const DisabledAuthFilterMixin = { + props: ['formData'], + data(){ + return { + + } + }, + methods:{ + isDisabledAuth(code){ + return disabledAuthFilter(code,this.formData); + }, + } + +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/JEditableTableMixin.js b/ant-design-vue-jeecg/src/mixins/JEditableTableMixin.js new file mode 100644 index 0000000..d613890 --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/JEditableTableMixin.js @@ -0,0 +1,182 @@ +import JEditableTable from '@/components/jeecg/JEditableTable' +import { VALIDATE_NO_PASSED, getRefPromise, validateFormAndTables } from '@/utils/JEditableTableUtil' +import { httpAction, getAction } from '@/api/manage' + +export const JEditableTableMixin = { + components: { + JEditableTable + }, + data() { + return { + title: '操作', + visible: false, + form: this.$form.createForm(this), + confirmLoading: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 } + } + } + }, + methods: { + + /** 获取所有的editableTable实例 */ + getAllTable() { + if (!(this.refKeys instanceof Array)) { + throw this.throwNotArray('refKeys') + } + let values = this.refKeys.map(key => getRefPromise(this, key)) + return Promise.all(values) + }, + + /** 遍历所有的JEditableTable实例 */ + eachAllTable(callback) { + // 开始遍历 + this.getAllTable().then(tables => { + tables.forEach((item, index) => { + if (typeof callback === 'function') { + callback(item, index) + } + }) + }) + }, + + /** 当点击新增按钮时调用此方法 */ + add() { + //update-begin-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930 + return new Promise((resolve) => { + this.tableReset(); + resolve(); + }).then(() => { + // 默认新增空数据 + let rowNum = this.addDefaultRowNum + if (typeof rowNum !== 'number') { + rowNum = 1 + console.warn('由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0') + } + this.eachAllTable((item) => { + item.add(rowNum) + }) + if (typeof this.addAfter === 'function') this.addAfter(this.model) + this.edit({}) + }) + //update-end-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930 + }, + /** 当点击了编辑(修改)按钮时调用此方法 */ + edit(record) { + if(record && '{}'!=JSON.stringify(record)){ + this.tableReset(); + } + if (typeof this.editBefore === 'function') this.editBefore(record) + this.visible = true + this.activeKey = this.refKeys[0] + this.form.resetFields() + this.model = Object.assign({}, record) + if (typeof this.editAfter === 'function') this.editAfter(this.model) + }, + /** 关闭弹窗,并将所有JEditableTable实例回归到初始状态 */ + close() { + this.visible = false + this.$emit('close') + }, + //清空子表table的数据 + tableReset(){ + this.eachAllTable((item) => { + item.clearRow() + }) + }, + /** 查询某个tab的数据 */ + requestSubTableData(url, params, tab, success) { + tab.loading = true + getAction(url, params).then(res => { + let { result } = res + let dataSource = [] + if (result) { + if (Array.isArray(result)) { + dataSource = result + } else if (Array.isArray(result.records)) { + dataSource = result.records + } + } + tab.dataSource = dataSource + typeof success === 'function' ? success(res) : '' + }).finally(() => { + tab.loading = false + }) + }, + /** 发起请求,自动判断是执行新增还是修改操作 */ + request(formData) { + let url = this.url.add, method = 'post' + if (this.model.id) { + url = this.url.edit + method = 'put' + } + this.confirmLoading = true + httpAction(url, formData, method).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.$emit('ok') + this.close() + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.confirmLoading = false + }) + }, + + /* --- handle 事件 --- */ + + /** ATab 选项卡切换事件 */ + handleChangeTabs(key) { + // 自动重置scrollTop状态,防止出现白屏 + getRefPromise(this, key).then(editableTable => { + editableTable.resetScrollTop() + }) + }, + /** 关闭按钮点击事件 */ + handleCancel() { + this.close() + }, + /** 确定按钮点击事件 */ + handleOk() { + /** 触发表单验证 */ + this.getAllTable().then(tables => { + /** 一次性验证主表和所有的次表 */ + return validateFormAndTables(this.form, tables) + }).then(allValues => { + if (typeof this.classifyIntoFormData !== 'function') { + throw this.throwNotFunction('classifyIntoFormData') + } + let formData = this.classifyIntoFormData(allValues) + // 发起请求 + return this.request(formData) + }).catch(e => { + if (e.error === VALIDATE_NO_PASSED) { + // 如果有未通过表单验证的子表,就自动跳转到它所在的tab + this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index] + } else { + console.error(e) + } + }) + }, + + /* --- throw --- */ + + /** not a function */ + throwNotFunction(name) { + return `${name} 未定义或不是一个函数` + }, + + /** not a array */ + throwNotArray(name) { + return `${name} 未定义或不是一个数组` + } + + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/JEditableTableModelMixin.js b/ant-design-vue-jeecg/src/mixins/JEditableTableModelMixin.js new file mode 100644 index 0000000..293f9c7 --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/JEditableTableModelMixin.js @@ -0,0 +1,190 @@ +import JEditableTable from '@/components/jeecg/JEditableTable' +import { VALIDATE_NO_PASSED, getRefPromise,validateFormModelAndTables} from '@/utils/JEditableTableUtil' +import { httpAction, getAction } from '@/api/manage' + +export const JEditableTableModelMixin = { + components: { + JEditableTable + }, + data() { + return { + title: '操作', + visible: false, + confirmLoading: false, + model:{}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 } + } + } + }, + methods: { + + /** 获取所有的editableTable实例 */ + getAllTable() { + if (!(this.refKeys instanceof Array)) { + throw this.throwNotArray('refKeys') + } + let values = this.refKeys.map(key => getRefPromise(this, key)) + return Promise.all(values) + }, + + /** 遍历所有的JEditableTable实例 */ + eachAllTable(callback) { + // 开始遍历 + this.getAllTable().then(tables => { + tables.forEach((item, index) => { + if (typeof callback === 'function') { + callback(item, index) + } + }) + }) + }, + /** 当点击新增按钮时调用此方法 */ + add() { + //update-begin-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930 + return new Promise((resolve) => { + this.tableReset(); + resolve(); + }).then(() => { + // 默认新增空数据 + let rowNum = this.addDefaultRowNum + if (typeof rowNum !== 'number') { + rowNum = 1 + console.warn('由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0') + } + this.eachAllTable((item) => { + item.add(rowNum) + }) + if (typeof this.addAfter === 'function') this.addAfter(this.model) + this.edit(this.model) + }) + //update-end-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930 + }, + /** 当点击了编辑(修改)按钮时调用此方法 */ + edit(record) { + if(record && '{}'!=JSON.stringify(record)&&record.id){ + this.tableReset(); + } + if (typeof this.editBefore === 'function') this.editBefore(record) + this.visible = true + this.activeKey = this.refKeys[0] + this.$refs.form.resetFields() + this.model = Object.assign({}, record) + if (typeof this.editAfter === 'function') this.editAfter(this.model) + }, + /** 关闭弹窗,并将所有JEditableTable实例回归到初始状态 */ + close() { + this.visible = false + this.$emit('close') + }, + //清空子表table的数据 + tableReset(){ + this.eachAllTable((item) => { + item.clearRow() + }) + }, + /** 查询某个tab的数据 */ + requestSubTableData(url, params, tab, success) { + tab.loading = true + getAction(url, params).then(res => { + let { result } = res + let dataSource = [] + if (result) { + if (Array.isArray(result)) { + dataSource = result + } else if (Array.isArray(result.records)) { + dataSource = result.records + } + } + tab.dataSource = dataSource + typeof success === 'function' ? success(res) : '' + }).finally(() => { + tab.loading = false + }) + }, + /** 发起请求,自动判断是执行新增还是修改操作 */ + request(formData) { + let url = this.url.add, method = 'post' + if (this.model.id) { + url = this.url.edit + method = 'put' + } + this.confirmLoading = true + httpAction(url, formData, method).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.$emit('ok') + this.close() + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.confirmLoading = false + }) + }, + + /* --- handle 事件 --- */ + + /** ATab 选项卡切换事件 */ + handleChangeTabs(key) { + // 自动重置scrollTop状态,防止出现白屏 + getRefPromise(this, key).then(editableTable => { + editableTable.resetScrollTop() + }) + }, + /** 关闭按钮点击事件 */ + handleCancel() { + this.close() + }, + /** 确定按钮点击事件 */ + handleOk() { + /** 触发表单验证 */ + this.getAllTable().then(tables => { + /** 一次性验证主表和所有的次表 */ + return validateFormModelAndTables(this.$refs.form,this.model, tables) + }).then(allValues => { + /** 一次性验证一对一的所有子表 */ + return this.validateSubForm(allValues) + }).then(allValues => { + if (typeof this.classifyIntoFormData !== 'function') { + throw this.throwNotFunction('classifyIntoFormData') + } + let formData = this.classifyIntoFormData(allValues) + // 发起请求 + return this.request(formData) + }).catch(e => { + if (e.error === VALIDATE_NO_PASSED) { + // 如果有未通过表单验证的子表,就自动跳转到它所在的tab + //update--begin--autor:liusq-----date:20210316------for:未通过表单验证跳转tab问题------ + this.activeKey = e.index == null ? this.activeKey : (e.paneKey?e.paneKey:this.refKeys[e.index]) + //update--end--autor:liusq-----date:20210316------for:未通过表单验证跳转tab问题------ + } else { + console.error(e) + } + }) + }, + //校验所有子表表单 + validateSubForm(allValues){ + return new Promise((resolve) => { + resolve(allValues) + }) + }, + /* --- throw --- */ + + /** not a function */ + throwNotFunction(name) { + return `${name} 未定义或不是一个函数` + }, + + /** not a array */ + throwNotArray(name) { + return `${name} 未定义或不是一个数组` + } + + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/JVxeTableMixin.js b/ant-design-vue-jeecg/src/mixins/JVxeTableMixin.js new file mode 100644 index 0000000..3d2bc31 --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/JVxeTableMixin.js @@ -0,0 +1,173 @@ +import { VALIDATE_FAILED, getRefPromise, validateFormAndTables} from '@/components/jeecg/JVxeTable/utils/vxeUtils.js' +import { httpAction, getAction } from '@/api/manage' + +export const JVxeTableMixin = { + data() { + return { + title: '操作', + visible: false, + form: this.$form.createForm(this), + confirmLoading: false, + scrolling: true, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 } + } + } + }, + methods: { + + /** 获取所有的JVxeTable实例 */ + getAllTable() { + if (!(this.refKeys instanceof Array)) { + throw this.throwNotArray('refKeys') + } + let values = this.refKeys.map(key => getRefPromise(this, key)) + return Promise.all(values) + }, + + /** 遍历所有的JVxeTable实例 */ + eachAllTable(callback) { + // 开始遍历 + this.getAllTable().then(tables => { + tables.forEach((item, index) => { + if (typeof callback === 'function') { + callback(item, index) + } + }) + }) + }, + + /** 当点击新增按钮时调用此方法 */ + add() { + if (typeof this.addBefore === 'function') this.addBefore() + // 默认新增空数据 + let rowNum = this.addDefaultRowNum + if (typeof rowNum !== 'number') { + rowNum = 1 + console.warn('由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0') + } + //update-begin-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349 + this.eachAllTable((item) => { + setTimeout(()=>{ + item.addRows() + }, 30) + }) + //update-end-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349 + if (typeof this.addAfter === 'function') this.addAfter(this.model) + this.edit({}) + }, + /** 当点击了编辑(修改)按钮时调用此方法 */ + edit(record) { + if (typeof this.editBefore === 'function') this.editBefore(record) + this.visible = true + this.activeKey = this.refKeys[0] + this.form.resetFields() + this.model = Object.assign({}, record) + if (typeof this.editAfter === 'function') this.editAfter(this.model) + }, + /** 关闭弹窗,并将所有JVxeTable实例回归到初始状态 */ + close() { + this.visible = false + this.eachAllTable((item) => { + item._remove() + }) + this.$emit('close') + }, + + /** 查询某个tab的数据 */ + requestSubTableData(url, params, tab, success) { + tab.loading = true + getAction(url, params).then(res => { + let { result } = res + let dataSource = [] + if (result) { + if (Array.isArray(result)) { + dataSource = result + } else if (Array.isArray(result.records)) { + dataSource = result.records + } + } + tab.dataSource = dataSource + typeof success === 'function' ? success(res) : '' + }).finally(() => { + tab.loading = false + }) + }, + /** 发起请求,自动判断是执行新增还是修改操作 */ + request(formData) { + let url = this.url.add, method = 'post' + if (this.model.id) { + url = this.url.edit + method = 'put' + } + this.confirmLoading = true + console.log("formData===>",formData); + httpAction(url, formData, method).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.$emit('ok') + this.close() + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.confirmLoading = false + }) + }, + + /* --- handle 事件 --- */ + + /** ATab 选项卡切换事件 */ + handleChangeTabs(key) { + // 自动重置scrollTop状态,防止出现白屏 + getRefPromise(this, key).then(vxeTable => { + vxeTable.resetScrollTop() + }) + }, + /** 关闭按钮点击事件 */ + handleCancel() { + this.close() + }, + /** 确定按钮点击事件 */ + handleOk() { + /** 触发表单验证 */ + this.getAllTable().then(tables => { + /** 一次性验证主表和所有的次表 */ + return validateFormAndTables(this.form, tables) + }).then(allValues => { + if (typeof this.classifyIntoFormData !== 'function') { + throw this.throwNotFunction('classifyIntoFormData') + } + let formData = this.classifyIntoFormData(allValues) + // 发起请求 + return this.request(formData) + }).catch(e => { + if (e.error === VALIDATE_NO_PASSED) { + // 如果有未通过表单验证的子表,就自动跳转到它所在的tab + this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index] + } else { + console.error(e) + } + }) + }, + + /* --- throw --- */ + + /** not a function */ + throwNotFunction(name) { + return `${name} 未定义或不是一个函数` + }, + + /** not a array */ + throwNotArray(name) { + return `${name} 未定义或不是一个数组` + } + + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/JVxeTableModelMixin.js b/ant-design-vue-jeecg/src/mixins/JVxeTableModelMixin.js new file mode 100644 index 0000000..606eaa5 --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/JVxeTableModelMixin.js @@ -0,0 +1,181 @@ +import { VALIDATE_FAILED, getRefPromise, validateFormAndTables,validateFormModelAndTables} from '@/components/jeecg/JVxeTable/utils/vxeUtils.js' +import { httpAction, getAction } from '@/api/manage' + +export const JVxeTableModelMixin = { + data() { + return { + title: '操作', + visible: false, + confirmLoading: false, + scrolling: true, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 } + } + } + }, + methods: { + + /** 获取所有的JVxeTable实例 */ + getAllTable() { + if (!(this.refKeys instanceof Array)) { + throw this.throwNotArray('refKeys') + } + let values = this.refKeys.map(key => getRefPromise(this, key)) + return Promise.all(values) + }, + + /** 遍历所有的JVxeTable实例 */ + eachAllTable(callback) { + // 开始遍历 + this.getAllTable().then(tables => { + console.log("tables",tables) + tables.forEach((item, index) => { + if (typeof callback === 'function') { + callback(item, index) + } + }) + }) + }, + + /** 当点击新增按钮时调用此方法 */ + add() { + if (typeof this.addBefore === 'function') this.addBefore() + // 默认新增空数据 + let rowNum = this.addDefaultRowNum + if (typeof rowNum !== 'number') { + rowNum = 1 + console.warn('由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0') + } + this.eachAllTable((item) => { + //update-begin-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349 + setTimeout(()=>{ + item.addRows() + }, 30) + //update-end-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349 + }) + if (typeof this.addAfter === 'function') this.addAfter(this.model) + this.edit(this.model) + }, + /** 当点击了编辑(修改)按钮时调用此方法 */ + edit(record) { + if (typeof this.editBefore === 'function') this.editBefore(record) + this.visible = true + this.activeKey = this.refKeys[0] + this.$refs.form.resetFields() + this.model = Object.assign({}, record) + if (typeof this.editAfter === 'function') this.editAfter(this.model) + }, + /** 关闭弹窗,并将所有JVxeTable实例回归到初始状态 */ + close() { + this.visible = false + this.eachAllTable((item) => { + item._remove() + }) + this.$emit('close') + }, + + /** 查询某个tab的数据 */ + requestSubTableData(url, params, tab, success) { + tab.loading = true + getAction(url, params).then(res => { + let { result } = res + let dataSource = [] + if (result) { + if (Array.isArray(result)) { + dataSource = result + } else if (Array.isArray(result.records)) { + dataSource = result.records + } + } + tab.dataSource = dataSource + typeof success === 'function' ? success(res) : '' + }).finally(() => { + tab.loading = false + }) + }, + /** 发起请求,自动判断是执行新增还是修改操作 */ + request(formData) { + let url = this.url.add, method = 'post' + if (this.model.id) { + url = this.url.edit + method = 'put' + } + this.confirmLoading = true + console.log("formData===>",formData); + httpAction(url, formData, method).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.$emit('ok') + this.close() + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.confirmLoading = false + }) + }, + + /* --- handle 事件 --- */ + + /** ATab 选项卡切换事件 */ + handleChangeTabs(key) { + // 自动重置scrollTop状态,防止出现白屏 + getRefPromise(this, key).then(vxeTable => { + vxeTable.resetScrollTop() + }) + }, + /** 关闭按钮点击事件 */ + handleCancel() { + this.close() + }, + /** 确定按钮点击事件 */ + handleOk() { + /** 触发表单验证 */ + this.getAllTable().then(tables => { + /** 一次性验证主表和所有的次表 */ + return validateFormModelAndTables(this.$refs.form,this.model, tables) + }).then(allValues => { + /** 一次性验证一对一的所有子表 */ + return this.validateSubForm(allValues) + }).then(allValues => { + if (typeof this.classifyIntoFormData !== 'function') { + throw this.throwNotFunction('classifyIntoFormData') + } + let formData = this.classifyIntoFormData(allValues) + // 发起请求 + return this.request(formData) + }).catch(e => { + if (e.error === VALIDATE_FAILED) { + // 如果有未通过表单验证的子表,就自动跳转到它所在的tab + this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index] + } else { + console.error(e) + } + }) + }, +//校验所有子表表单 + validateSubForm(allValues){ + return new Promise((resolve) => { + resolve(allValues) + }) + }, + /* --- throw --- */ + + /** not a function */ + throwNotFunction(name) { + return `${name} 未定义或不是一个函数` + }, + + /** not a array */ + throwNotArray(name) { + return `${name} 未定义或不是一个数组` + } + + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/JeecgListMixin.js b/ant-design-vue-jeecg/src/mixins/JeecgListMixin.js new file mode 100644 index 0000000..739a930 --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/JeecgListMixin.js @@ -0,0 +1,537 @@ +/** + * 新增修改完成调用 modalFormOk方法 编辑弹框组件ref定义为modalForm + * 高级查询按钮调用 superQuery方法 高级查询组件ref定义为superQueryModal + * data中url定义 list为查询列表 delete为删除单条记录 deleteBatch为批量删除 + */ +import { filterObj } from '@/utils/util'; +import { deleteAction, getAction,downFile,getFileAccessHttpUrl } from '@/api/manage' +import Vue from 'vue' +import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types" +import store from '@/store' +import {Modal} from 'ant-design-vue' +import {httpAction, httpPostAction} from "../api/manage"; + +export const JeecgListMixin = { + data(){ + return { + /* 查询条件-请不要在queryParam中声明非字符串值的属性 */ + queryParam: {}, + /* 数据源 */ + dataSource:[], + /* 分页参数 */ + ipagination:{ + current: 1, + pageSize: 10, + pageSizeOptions: ['10', '20', '30'], + showTotal: (total, range) => { + return range[0] + "-" + range[1] + " 共" + total + "条" + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + /* 排序参数 */ + isorter:{ + column: 'createTime', + order: 'desc', + }, + /* 筛选参数 */ + filters: {}, + /* table加载状态 */ + loading:false, + /* table选中keys*/ + selectedRowKeys: [], + /* table选中records*/ + selectionRows: [], + /* 查询折叠 */ + toggleSearchStatus:false, + /* 高级查询条件生效状态 */ + superQueryFlag:false, + /* 高级查询条件 */ + superQueryParams: '', + /** 高级查询拼接方式 */ + superQueryMatchType: 'and', + } + }, + created() { + if(!this.disableMixinCreated){ + console.log(' -- mixin created -- ') + this.loadData(); + //初始化字典配置 在自己页面定义 + this.initDictConfig(); + } + }, + computed: { + //token header + tokenHeader(){ + let head = {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)} + let tenantid = Vue.ls.get(TENANT_ID) + if(tenantid){ + head['tenant-id'] = tenantid + } + return head; + } + }, + methods:{ + loadData(arg) { + if(!this.url.list){ + this.$message.error("请设置url.list属性!") + return + } + //加载数据 若传入参数1则加载第一页的内容 + if (arg === 1) { + this.ipagination.current = 1; + } + var params = this.getQueryParams();//查询条件 + this.loading = true; + getAction(this.url.list, params).then((res) => { + if (res.success) { + //update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ + this.dataSource = res.result.records||res.result; + if(res.result.total) + { + this.ipagination.total = res.result.total; + }else{ + this.ipagination.total = 0; + } + //update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ + } + if(res.code===510){ + this.$message.warning(res.message) + } + this.loading = false; + }) + }, + initDictConfig(){ + console.log("--这是一个假的方法!") + }, + handleSuperQuery(params, matchType) { + //高级查询方法 + if(!params){ + this.superQueryParams='' + this.superQueryFlag = false + }else{ + this.superQueryFlag = true + this.superQueryParams=JSON.stringify(params) + this.superQueryMatchType = matchType + } + this.loadData(1) + }, + getQueryParams() { + //获取查询条件 + let sqp = {} + if(this.superQueryParams){ + sqp['superQueryParams']=encodeURI(this.superQueryParams) + sqp['superQueryMatchType'] = this.superQueryMatchType + } + + // let a={}; + // var filtersTmp = Object.assign(a,this.filters); + var param = Object.assign(sqp, this.queryParam, this.isorter ,this.filters); + console.log(this.filters) + + param.field = this.getQueryField(); + param.pageNo = this.ipagination.current; + param.pageSize = this.ipagination.pageSize; + return filterObj(param); + }, + getQueryField() { + //TODO 字段权限控制 + var str = "id,"; + this.columns.forEach(function (value) { + str += "," + value.dataIndex; + }); + return str; + }, + + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + }, + onClearSelected() { + this.selectedRowKeys = []; + this.selectionRows = []; + }, + searchQuery() { + this.loadData(1); + }, + superQuery() { + this.$refs.superQueryModal.show(); + }, + searchReset() { + this.queryParam = {} + this.loadData(1); + }, + batchDel: function () { + if(!this.url.deleteBatch){ + this.$message.error("请设置url.deleteBatch属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认删除", + content: "是否删除选中数据?", + onOk: function () { + that.loading = true; + deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + batchEdit: function () { + if(!this.url.editBatch){ + this.$message.error("请设置url.editBatch属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认提审", + content: "是否提审选中数据?", + onOk: function () { + that.loading = true; + httpPostAction(that.url.editBatch, {ids: ids},'put').then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + + batchAuditPass:function () { + if(!this.url.batchAuditPass){ + this.$message.error("请设置url.batchAuditPass属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认通过", + content: "是否通过选中数据?", + onOk: function () { + that.loading = true; + httpPostAction(that.url.batchAuditPass, {ids: ids},"put").then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + + batchAuditReject:function () { + if(!this.url.batchAuditReject){ + this.$message.error("请设置url.batchAuditReject属性!") + return + } + if (this.selectedRowKeys.length <= 0) { + this.$message.warning('请选择一条记录!'); + return; + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "确认拒绝", + content: "是否拒绝选中数据?", + onOk: function () { + that.loading = true; + httpPostAction(that.url.batchAuditReject, {ids: ids},'put').then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(that.selectedRowKeys.length) + that.$message.success(res.message); + that.loadData(); + that.onClearSelected(); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + + + + handleDelete: function (id) { + if(!this.url.delete){ + this.$message.error("请设置url.delete属性!") + return + } + var that = this; + deleteAction(that.url.delete, {id: id}).then((res) => { + if (res.success) { + //重新计算分页问题 + that.reCalculatePage(1) + that.$message.success(res.message); + that.loadData(); + } else { + that.$message.warning(res.message); + } + }); + }, + + + + + reCalculatePage(count){ + //总数量-count + let total=this.ipagination.total-count; + //获取删除后的分页数 + let currentIndex=Math.ceil(total/this.ipagination.pageSize); + //删除后的分页数<所在当前页 + if(currentIndex 0){ + let filterFields = Object.keys(filters); + for (var i = 0; i 0) + filterValueString = filterValueString + ','; + + filterValueString = filterValueString + filterValues[j]; + } + + Object.defineProperty(this.filters,filterField, { + value:filterValueString, + enumerable: true, + configurable: true, + writable:true + }); + + // Object.defineProperty(this.filters,filterField, { + // get: function () { + // return filterValueString + // }, + // set: function(val){ + // Object.defineProperty(this.filters,filterField,val) + // }, + // enumerable: true, + // configurable: true + // }); + } + } + + if (Object.keys(sorter).length > 0) { + this.isorter.column = sorter.field; + this.isorter.order = "ascend" == sorter.order ? "asc" : "desc" + } + this.ipagination = pagination; + this.loadData(); + }, + handleToggleSearch(){ + this.toggleSearchStatus = !this.toggleSearchStatus; + }, + // 给popup查询使用(查询区域不支持回填多个字段,限制只返回一个字段) + getPopupField(fields){ + return fields.split(',')[0] + }, + modalFormOk() { + // 新增/修改 成功时,重载列表 + this.loadData(); + //清空列表选中 + this.onClearSelected() + }, + handleDetail:function(record){ + this.$refs.modalForm.edit(record); + this.$refs.modalForm.title="详情"; + this.$refs.modalForm.disableSubmit = true; + }, + /* 导出 */ + handleExportXls2(){ + let paramsStr = encodeURI(JSON.stringify(this.getQueryParams())); + let url = `${window._CONFIG['domianURL']}/${this.url.exportXlsUrl}?paramsStr=${paramsStr}`; + window.location.href = url; + }, + handleExportXls(fileName){ + if(!fileName || typeof fileName != "string"){ + fileName = "导出文件" + } + let param = this.getQueryParams(); + if(this.selectedRowKeys && this.selectedRowKeys.length>0){ + param['selections'] = this.selectedRowKeys.join(",") + } + console.log("导出参数",param) + downFile(this.url.exportXlsUrl,param).then((data)=>{ + if (!data) { + this.$message.warning("文件下载失败") + return + } + if (typeof window.navigator.msSaveBlob !== 'undefined') { + window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls') + }else{ + let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'})) + let link = document.createElement('a') + link.style.display = 'none' + link.href = url + link.setAttribute('download', fileName+'.xls') + document.body.appendChild(link) + link.click() + document.body.removeChild(link); //下载完成移除元素 + window.URL.revokeObjectURL(url); //释放掉blob对象 + } + }) + }, + /* 导入 */ + handleImportExcel(info){ + if (info.file.status !== 'uploading') { + console.log(info.file, info.fileList); + } + if (info.file.status === 'done') { + if (info.file.response.success) { + // this.$message.success(`${info.file.name} 文件上传成功`); + if (info.file.response.code === 201) { + let { message, result: { msg, fileUrl, fileName } } = info.file.response + let href = window._CONFIG['domianURL'] + fileUrl + this.$warning({ + title: message, + content: (
+ {msg}
+ 具体详情请 点击下载 +
+ ) + }) + } else { + this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`) + } + this.loadData() + } else { + this.$message.error(`${info.file.name} ${info.file.response.message}.`); + } + } else if (info.file.status === 'error') { + if (info.file.response.status === 500) { + let data = info.file.response + const token = Vue.ls.get(ACCESS_TOKEN) + if (token && data.message.includes("Token失效")) { + Modal.error({ + title: '登录已过期', + content: '很抱歉,登录已过期,请重新登录', + okText: '重新登录', + mask: false, + onOk: () => { + store.dispatch('Logout').then(() => { + Vue.ls.remove(ACCESS_TOKEN) + window.location.reload(); + }) + } + }) + } + } else { + this.$message.error(`文件上传失败: ${info.file.msg} `); + } + } + }, + /* 图片预览 */ + getImgView(text){ + if(text && text.indexOf(",")>0){ + text = text.substring(0,text.indexOf(",")) + } + return getFileAccessHttpUrl(text) + }, + /* 文件下载 */ + // update--autor:lvdandan-----date:20200630------for:修改下载文件方法名uploadFile改为downloadFile------ + downloadFile(text){ + if(!text){ + this.$message.warning("未知的文件") + return; + } + if(text.indexOf(",")>0){ + text = text.substring(0,text.indexOf(",")) + } + let url = getFileAccessHttpUrl(text) + window.open(url); + }, + } + +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/OnlineCommonUtil.js b/ant-design-vue-jeecg/src/mixins/OnlineCommonUtil.js new file mode 100644 index 0000000..7de0b6d --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/OnlineCommonUtil.js @@ -0,0 +1,26 @@ +import { formatDate } from '@/utils/util' +import Area from '@/components/_util/Area' + +const onlUtil = { + data(){ + return { + mixin_pca:'' + } + }, + created(){ + this.mixin_pca = new Area() + }, + methods:{ + simpleDateFormat(millisecond, format){ + return formatDate(millisecond, format) + }, + getPcaText(code){ + return this.mixin_pca.getText(code); + }, + getPcaCode(text){ + return this.mixin_pca.getCode(text) + } + } +} + +export { onlUtil } \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/RecentlyJeecgListMixin.js b/ant-design-vue-jeecg/src/mixins/RecentlyJeecgListMixin.js new file mode 100644 index 0000000..218791a --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/RecentlyJeecgListMixin.js @@ -0,0 +1,150 @@ +/** + * 新增修改完成调用 modalFormOk方法 编辑弹框组件ref定义为modalForm + * 高级查询按钮调用 superQuery方法 高级查询组件ref定义为superQueryModal + * data中url定义 list为查询列表 delete为删除单条记录 deleteBatch为批量删除 + */ +import { filterObj } from '@/utils/util'; +import { deleteAction, getAction,downFile,getFileAccessHttpUrl } from '@/api/manage' +import Vue from 'vue' +import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types" +import store from '@/store' +import {Modal} from 'ant-design-vue' +import {httpAction, httpPostAction} from "../api/manage"; + +export const RencentlyJeecgListMixin = { + data(){ + return { + /* 数据源 */ + rencentlyDataSource:[], + /* 分页参数 */ + rencentlyIpagination:{ + current: 1, + pageSize: 10, + pageSizeOptions: ['10'], + showTotal: (total, range) => { + return range[0] + "-" + range[1] + " 共" + total + "条" + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + /* 排序参数 */ + rencentlyIsorter:{ + column: 'createTime', + order: 'desc', + }, + /* table加载状态 */ + rencentlyLoading:false, + } + }, + created() { + if(!this.disableMixinCreated){ + console.log(' -- 6666 -- ') + this.rencentlyLoadData(); + //初始化字典配置 在自己页面定义 + this.initDictConfig(); + } + }, + computed: { + //token header + tokenHeader(){ + let head = {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)} + let tenantid = Vue.ls.get(TENANT_ID) + if(tenantid){ + head['tenant-id'] = tenantid + } + return head; + } + }, + methods:{ + + rencentlyLoadData(arg) { + console.log("执行rencentlyLoadData方法") + if(!this.url.recentlyList){ + this.$message.error("请设置url.recentlyList的属性!") + return + } + //加载数据 若传入参数1则加载第一页的内容 + if (arg === 1) { + this.rencentlyIpagination.current = 1; + } + var params = this.getQueryParams();//查询条件 + this.rencentlyLoading = true; + getAction(this.url.recentlyList, params).then((res) => { + if (res.success) { + //update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ + this.rencentlyDataSource = res.result.records||res.result; + if(res.result.total) + { + this.rencentlyIpagination.total = res.result.total; + }else{ + this.rencentlyIpagination.total = 0; + } + //update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ + } + if(res.code===510){ + this.$message.warning(res.message) + } + this.rencentlyLoading = false; + }) + }, + getQueryField() { + //TODO 字段权限控制 + var str = "id,"; + this.columns.forEach(function (value) { + str += "," + value.dataIndex; + }); + return str; + }, + + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + }, + onClearSelected() { + this.selectedRowKeys = []; + this.selectionRows = []; + }, + searchQuery() { + this.rencentlyLoadData(1); + }, + superQuery() { + this.$refs.superQueryModal.show(); + }, + searchReset() { + this.queryParam = {} + this.rencentlyLoadData(1); + }, + + reCalculatePage(count){ + //总数量-count + let total=this.rencentlyIpagination.total-count; + //获取删除后的分页数 + let currentIndex=Math.ceil(total/this.rencentlyIpagination.pageSize); + //删除后的分页数<所在当前页 + if(currentIndex 0) { + this.rencentlyIsorter.column = sorter.field; + this.rencentlyIsorter.order = "ascend" == sorter.order ? "asc" : "desc" + } + this.rencentlyIpagination = pagination; + this.rencentlyLoadData(); + }, + handleToggleSearch(){ + this.toggleSearchStatus = !this.toggleSearchStatus; + }, + // 给popup查询使用(查询区域不支持回填多个字段,限制只返回一个字段) + getPopupField(fields){ + return fields.split(',')[0] + }, + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/mixins/WebsocketMixin.js b/ant-design-vue-jeecg/src/mixins/WebsocketMixin.js new file mode 100644 index 0000000..ee03f8c --- /dev/null +++ b/ant-design-vue-jeecg/src/mixins/WebsocketMixin.js @@ -0,0 +1,63 @@ +import store from '@/store/' +import { ACCESS_TOKEN } from '@/store/mutation-types' +import Vue from 'vue' + +export const WebsocketMixin = { + mounted() { + this.initWebSocket(); + }, + destroyed: function () { + // 离开页面生命周期函数 + this.websocketOnclose(); + }, + methods:{ + initWebSocket: function () { + let token = Vue.ls.get(ACCESS_TOKEN) + console.log("------------WebSocket连接成功"); + // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https + var userId = store.getters.userInfo.id; + if(!this.socketUrl.startsWith('/')){ + this.socketUrl = '/' + this.socketUrl + } + if(!this.socketUrl.endsWith('/')){ + this.socketUrl = this.socketUrl + '/' + } + var url = window._CONFIG['domianURL'].replace("https://","wss://").replace("http://","ws://") + this.socketUrl + userId + "/" + token; + this.websock = new WebSocket(url); + this.websock.onopen = this.websocketOnopen; + this.websock.onerror = this.websocketOnerror; + this.websock.onmessage = this.websocketOnmessage; + this.websock.onclose = this.websocketOnclose; + }, + websocketOnopen: function () { + console.log("WebSocket连接成功"); + }, + websocketOnerror: function (e) { + console.log("WebSocket连接发生错误"); + this.reconnect(); + }, + websocketOnclose: function (e) { + this.reconnect(); + }, + websocketSend(text) { + // 数据发送 + try { + this.websock.send(text); + } catch (err) { + console.log("send failed (" + err.code + ")"); + } + }, + reconnect() { + var that = this; + if(that.lockReconnect) return; + that.lockReconnect = true; + //没连接上会一直重连,设置延迟避免请求过多 + setTimeout(function () { + console.info("尝试重连..."); + that.initWebSocket(); + that.lockReconnect = false; + }, 5000); + }, + } + +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/permission.js b/ant-design-vue-jeecg/src/permission.js new file mode 100644 index 0000000..4182767 --- /dev/null +++ b/ant-design-vue-jeecg/src/permission.js @@ -0,0 +1,78 @@ +import Vue from 'vue' +import router from './router' +import store from './store' +import NProgress from 'nprogress' // progress bar +import 'nprogress/nprogress.css' // progress bar style +import notification from 'ant-design-vue/es/notification' +import { ACCESS_TOKEN,INDEX_MAIN_PAGE_PATH } from '@/store/mutation-types' +import { generateIndexRouter } from "@/utils/util" + +NProgress.configure({ showSpinner: false }) // NProgress Configuration + +const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration','/login',] // no redirect whitelist + +router.beforeEach((to, from, next) => { + NProgress.start() // start progress bar + + if (Vue.ls.get(ACCESS_TOKEN)) { + /* has token */ + if (to.path === '/user/login') { + next({ path: INDEX_MAIN_PAGE_PATH }) + NProgress.done() + } else { + if (store.getters.permissionList.length === 0) { + store.dispatch('GetPermissionList').then(res => { + const menuData = res.result.menu; + //console.log(res.message) + if (menuData === null || menuData === "" || menuData === undefined) { + return; + } + let constRoutes = []; + constRoutes = generateIndexRouter(menuData); + // 添加主界面路由 + store.dispatch('UpdateAppRouter', { constRoutes }).then(() => { + // 根据roles权限生成可访问的路由表 + // 动态添加可访问路由表 + router.addRoutes(store.getters.addRouters) + const redirect = decodeURIComponent(from.query.redirect || to.path) + if (to.path === redirect) { + // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record + next({ ...to, replace: true }) + } else { + // 跳转到目的路由 + next({ path: redirect }) + } + }) + }) + .catch(err => { + console.log(err) + /* notification.error({ + message: '系统提示', + description: '请求用户信息失败,请重试!' + })*/ + store.dispatch('Logout').then(() => { + next({path:'/user/login'}); + // next({ path: '/user/login', query: { redirect: to.fullPath } }) + }) + }) + } else { + next() + } + } + } else { + if (whiteList.indexOf(to.path) !== -1) { + // 在免登录白名单,直接进入 + next() + } else { + // 调整没有token重定向问题,默认为系统内登录 + // 第三方登录为 /login + next({path:'/user/login'}); + // next({ path: '/user/login', query: { redirect: to.fullPath } }) + NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it + } + } +}) + +router.afterEach(() => { + NProgress.done() // finish progress bar +}) diff --git a/ant-design-vue-jeecg/src/router/README.md b/ant-design-vue-jeecg/src/router/README.md new file mode 100644 index 0000000..9e82538 --- /dev/null +++ b/ant-design-vue-jeecg/src/router/README.md @@ -0,0 +1,139 @@ +路由/菜单说明 +==== + + + +配置文件路径 +---- + +`@/config/router.config.js` + + + +格式和说明 +---- + +```javascript +/** + * 路由配置说明: + * 建议:sider menu 请不要超过三级菜单,若超过三级菜单,则应该设计为顶部主菜单 配合左侧次级菜单 + * + **/ + { + redirect: noredirect, + name: 'router-name', + hidden: true, + meta: { + title: 'title', + icon: 'a-icon', + keepAlive: true, + hiddenHeaderContent: true, + } +} +``` + + + +`{ Route }` 对象 + +| 参数 | 说明 | 类型 | 默认值 | +| -------- | ----------------------------------------- | ------- | ------ | +| hidden | 控制路由是否显示在 sidebar | boolean | falase | +| redirect | 重定向地址, 访问这个路由时,自定进行重定向 | string | - | +| name | 路由名称, 建议设置,且不能重名 | string | - | +| meta | 路由元信息(路由附带扩展信息) | object | {} | + + + +`{ Meta }` 路由元信息对象 + +| 参数 | 说明 | 类型 | 默认值 | +| ------------------- | ------------------------------------------------------------ | ------- | ------ | +| title | 路由标题, 用于显示面包屑, 页面标题 *推荐设置 | string | - | +| icon | 路由在 menu 上显示的图标 | string | - | +| keepAlive | 缓存该路由 | boolean | false | +| hiddenHeaderContent | *特殊 隐藏 [PageHeader](https://github.com/sendya/ant-design-pro-vue/blob/master/src/components/layout/PageHeader.vue#L14) 组件中的页面带的 面包屑和页面标题栏 | boolean | false | +| permission | 与项目提供的权限拦截匹配的权限,如果不匹配,则会被禁止访问该路由页面 | array | [] | + + + +路由例子 +---- + +```ecmascript 6 +const asyncRouterMap = [ + { + path: '/', + name: 'index', + component: BasicLayout, + meta: { title: '首页' }, + redirect: '/dashboard/analysis', + children: [ + { + path: '/dashboard', + component: Layout, + name: 'dashboard', + redirect: '/dashboard/workplace', + meta: {title: '仪表盘', icon: 'dashboard', permission: ['dashboard']}, + children: [ + { + path: '/dashboard/analysis', + name: 'Analysis', + component: () => import('@/views/dashboard/Analysis'), + meta: {title: '分析页', permission: ['dashboard']} + }, + { + path: '/dashboard/monitor', + name: 'Monitor', + hidden: true, + component: () => import('@/views/dashboard/Monitor'), + meta: {title: '监控页', permission: ['dashboard']} + }, + { + path: '/dashboard/workplace', + name: 'Workplace', + component: () => import('@/views/dashboard/Workplace'), + meta: {title: '工作台', permission: ['dashboard']} + } + ] + }, + + // result + { + path: '/result', + name: 'result', + component: PageView, + redirect: '/result/success', + meta: { title: '结果页', icon: 'check-circle-o', permission: [ 'result' ] }, + children: [ + { + path: '/result/success', + name: 'ResultSuccess', + component: () => import(/* webpackChunkName: "result" */ '@/views/result/Success'), + // 该页面隐藏面包屑和页面标题栏 + meta: { title: '成功', hiddenHeaderContent: true, permission: [ 'result' ] } + }, + { + path: '/result/fail', + name: 'ResultFail', + component: () => import(/* webpackChunkName: "result" */ '@/views/result/Error'), + // 该页面隐藏面包屑和页面标题栏 + meta: { title: '失败', hiddenHeaderContent: true, permission: [ 'result' ] } + } + ] + }, + ... + ] + }, +] +``` + +> 1. 请注意 `component: () => import('..') ` 方式引入路由的页面组件为 懒加载模式。具体可以看 [Vue 官方文档](https://router.vuejs.org/zh/guide/advanced/lazy-loading.html) +> 2. 增加新的路由应该增加在 '/' (index) 路由的 `children` 内 +> 3. `permission` 可以进行自定义修改,只需要对这个模块进行自定义修改即可 [src/store/modules/permission.js#L10](https://github.com/sendya/ant-design-pro-vue/blob/master/src/store/modules/permission.js#L10) + + + +附权限路由结构: + +![权限结构](https://static-2.loacg.com/open/static/github/permissions.png) \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/router/index.js b/ant-design-vue-jeecg/src/router/index.js new file mode 100644 index 0000000..bdbe374 --- /dev/null +++ b/ant-design-vue-jeecg/src/router/index.js @@ -0,0 +1,12 @@ +import Vue from 'vue' +import Router from 'vue-router' +import { constantRouterMap } from '@/config/router.config' + +Vue.use(Router) + +export default new Router({ + mode: 'history', + base: process.env.BASE_URL, + scrollBehavior: () => ({ y: 0 }), + routes: constantRouterMap +}) \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/store/getters.js b/ant-design-vue-jeecg/src/store/getters.js new file mode 100644 index 0000000..6e295d3 --- /dev/null +++ b/ant-design-vue-jeecg/src/store/getters.js @@ -0,0 +1,23 @@ +import Vue from 'vue' +import { USER_INFO, ENHANCE_PRE } from "@/store/mutation-types" +const getters = { + device: state => state.app.device, + theme: state => state.app.theme, + color: state => state.app.color, + token: state => state.user.token, + avatar: state => {state.user.avatar = Vue.ls.get(USER_INFO).avatar; return state.user.avatar}, + username: state => state.user.username, + nickname: state => {state.user.realname = Vue.ls.get(USER_INFO).realname; return state.user.realname}, + welcome: state => state.user.welcome, + permissionList: state => state.user.permissionList, + userInfo: state => {state.user.info = Vue.ls.get(USER_INFO); return state.user.info}, + addRouters: state => state.permission.addRouters, + onlAuthFields: state => {return state.online.authFields }, + enhanceJs:(state) => (code) => { + state.enhance.enhanceJs[code] = Vue.ls.get(ENHANCE_PRE+code); + return state.enhance.enhanceJs[code] + } + +} + +export default getters diff --git a/ant-design-vue-jeecg/src/store/index.js b/ant-design-vue-jeecg/src/store/index.js new file mode 100644 index 0000000..ee4e41e --- /dev/null +++ b/ant-design-vue-jeecg/src/store/index.js @@ -0,0 +1,31 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import app from './modules/app' +import user from './modules/user' +import permission from './modules/permission' +import enhance from './modules/enhance' +import online from './modules/online' +import getters from './getters' + +Vue.use(Vuex) + +export default new Vuex.Store({ + modules: { + app, + user, + permission, + enhance, + online + }, + state: { + + }, + mutations: { + + }, + actions: { + + }, + getters +}) diff --git a/ant-design-vue-jeecg/src/store/modules/app.js b/ant-design-vue-jeecg/src/store/modules/app.js new file mode 100644 index 0000000..e7912e6 --- /dev/null +++ b/ant-design-vue-jeecg/src/store/modules/app.js @@ -0,0 +1,126 @@ +import Vue from 'vue' +import { + SIDEBAR_TYPE, + DEFAULT_THEME, + DEFAULT_LAYOUT_MODE, + DEFAULT_COLOR, + DEFAULT_COLOR_WEAK, + DEFAULT_FIXED_HEADER, + DEFAULT_FIXED_SIDEMENU, + DEFAULT_FIXED_HEADER_HIDDEN, + DEFAULT_CONTENT_WIDTH_TYPE, + DEFAULT_MULTI_PAGE +} from "@/store/mutation-types" + +const app = { + state: { + sidebar: { + opened: true, + withoutAnimation: false + }, + device: 'desktop', + theme: '', + layout: '', + contentWidth: '', + fixedHeader: false, + fixSiderbar: false, + autoHideHeader: false, + color: null, + weak: false, + multipage: true //默认多页签模式 + }, + mutations: { + SET_SIDEBAR_TYPE: (state, type) => { + state.sidebar.opened = type + Vue.ls.set(SIDEBAR_TYPE, type) + }, + CLOSE_SIDEBAR: (state, withoutAnimation) => { + Vue.ls.set(SIDEBAR_TYPE, true) + state.sidebar.opened = false + state.sidebar.withoutAnimation = withoutAnimation + }, + TOGGLE_DEVICE: (state, device) => { + state.device = device + }, + TOGGLE_THEME: (state, theme) => { + // setStore('_DEFAULT_THEME', theme) + Vue.ls.set(DEFAULT_THEME, theme) + state.theme = theme + }, + TOGGLE_LAYOUT_MODE: (state, layout) => { + Vue.ls.set(DEFAULT_LAYOUT_MODE, layout) + state.layout = layout + }, + TOGGLE_FIXED_HEADER: (state, fixed) => { + Vue.ls.set(DEFAULT_FIXED_HEADER, fixed) + state.fixedHeader = fixed + }, + TOGGLE_FIXED_SIDERBAR: (state, fixed) => { + Vue.ls.set(DEFAULT_FIXED_SIDEMENU, fixed) + state.fixSiderbar = fixed + }, + TOGGLE_FIXED_HEADER_HIDDEN: (state, show) => { + Vue.ls.set(DEFAULT_FIXED_HEADER_HIDDEN, show) + state.autoHideHeader = show + }, + TOGGLE_CONTENT_WIDTH: (state, type) => { + Vue.ls.set(DEFAULT_CONTENT_WIDTH_TYPE, type) + state.contentWidth = type + }, + TOGGLE_COLOR: (state, color) => { + Vue.ls.set(DEFAULT_COLOR, color) + state.color = color + }, + TOGGLE_WEAK: (state, flag) => { + Vue.ls.set(DEFAULT_COLOR_WEAK, flag) + state.weak = flag + }, + SET_MULTI_PAGE (state, multipageFlag) { + Vue.ls.set(DEFAULT_MULTI_PAGE, multipageFlag) + state.multipage = multipageFlag + } + }, + actions: { + setSidebar: ({ commit }, type) => { + commit('SET_SIDEBAR_TYPE', type) + }, + CloseSidebar({ commit }, { withoutAnimation }) { + commit('CLOSE_SIDEBAR', withoutAnimation) + }, + ToggleDevice({ commit }, device) { + commit('TOGGLE_DEVICE', device) + }, + ToggleTheme({ commit }, theme) { + commit('TOGGLE_THEME', theme) + }, + ToggleLayoutMode({ commit }, mode) { + commit('TOGGLE_LAYOUT_MODE', mode) + }, + ToggleFixedHeader({ commit }, fixedHeader) { + if (!fixedHeader) { + commit('TOGGLE_FIXED_HEADER_HIDDEN', false) + } + commit('TOGGLE_FIXED_HEADER', fixedHeader) + }, + ToggleFixSiderbar({ commit }, fixSiderbar) { + commit( 'TOGGLE_FIXED_SIDERBAR', fixSiderbar) + }, + ToggleFixedHeaderHidden({ commit }, show) { + commit('TOGGLE_FIXED_HEADER_HIDDEN', show) + }, + ToggleContentWidth({ commit }, type) { + commit('TOGGLE_CONTENT_WIDTH', type) + }, + ToggleColor({ commit }, color) { + commit('TOGGLE_COLOR', color) + }, + ToggleWeak({ commit }, weakFlag) { + commit('TOGGLE_WEAK', weakFlag) + }, + ToggleMultipage({ commit }, multipageFlag) { + commit('SET_MULTI_PAGE', multipageFlag) + } + } +} + +export default app \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/store/modules/enhance.js b/ant-design-vue-jeecg/src/store/modules/enhance.js new file mode 100644 index 0000000..e7c254d --- /dev/null +++ b/ant-design-vue-jeecg/src/store/modules/enhance.js @@ -0,0 +1,37 @@ +import Vue from 'vue' +const enhance = { + state: { + enhanceJs:{ + + } + }, + mutations: { + ADD_TABLE_ENHANCE: (state, record) => { + if(!state.enhanceJs){ + let obj = {} + let arr = [] + arr.push({...record}) + obj[record.code] = arr + state.enhanceJs = obj + }else{ + if(!state.enhanceJs[record.code]){ + let arr = [] + arr.push({...record}) + state.enhanceJs[record.code] = arr + } + state.enhanceJs[record.code].push({...record}) + } + let arr = state.enhanceJs[record.code] + while(arr.length>16){ + arr.shift() + } + Vue.ls.set('enhance_'+record['code'], arr) + } + }, + actions: { + addEhanceRecord({ commit }, record) { + commit('ADD_TABLE_ENHANCE', record) + } + } +} +export default enhance \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/store/modules/online.js b/ant-design-vue-jeecg/src/store/modules/online.js new file mode 100644 index 0000000..de6b26f --- /dev/null +++ b/ant-design-vue-jeecg/src/store/modules/online.js @@ -0,0 +1,25 @@ +import Vue from 'vue' +import { ONL_AUTH_FIELDS } from "@/store/mutation-types" +import { getAction } from '@/api/manage' + + +const online = { + state: { + //存储对象属性 value,text + authFields: [], + }, + mutations: { + SET_AUTHFIELDS: (state, fields) => { + console.log('fields',fields) + Vue.set(state, 'authFields', fields) + } + }, + actions: { + // TODO 如果没找到可以尝试请求一下 + xxxxxx({ commit }, userInfo) { + } + + } +} + +export default online \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/store/modules/permission.js b/ant-design-vue-jeecg/src/store/modules/permission.js new file mode 100644 index 0000000..97976c8 --- /dev/null +++ b/ant-design-vue-jeecg/src/store/modules/permission.js @@ -0,0 +1,90 @@ +import { asyncRouterMap, constantRouterMap } from "@/config/router.config" + +/** + * 过滤账户是否拥有某一个权限,并将菜单从加载列表移除 + * + * @param permission + * @param route + * @returns {boolean} + */ +function hasPermission(permission, route) { + if (route.meta && route.meta.permission) { + let flag = -1 + for (let i = 0, len = permission.length; i < len; i++) { + flag = route.meta.permission.indexOf(permission[i]) + if (flag >= 0) { + return true + } + } + return false + } + return true +} + +/** + * 单账户多角色时,使用该方法可过滤角色不存在的菜单 + * + * @param roles + * @param route + * @returns {*} + */ +// eslint-disable-next-line +function hasRole(roles, route) { + if (route.meta && route.meta.roles) { + return route.meta.roles.indexOf(roles.id) + } else { + return true + } +} + +function filterAsyncRouter(routerMap, roles) { + const accessedRouters = routerMap.filter(route => { + if (hasPermission(roles.permissionList, route)) { + if (route.children && route.children.length) { + route.children = filterAsyncRouter(route.children, roles) + } + return true + } + return false + }) + return accessedRouters +} + + +const permission = { + state: { + routers: constantRouterMap, + addRouters: [] + }, + mutations: { + SET_ROUTERS: (state, data) => { + state.addRouters = data + state.routers = constantRouterMap.concat(data) + //console.log('-----mutations---SET_ROUTERS----', data) + } + }, + actions: { + GenerateRoutes({ commit }, data) { + return new Promise(resolve => { + const { roles } = data + console.log('-----mutations---data----', data) + let accessedRouters + accessedRouters = filterAsyncRouter(asyncRouterMap, roles) + console.log('-----mutations---accessedRouters----', accessedRouters) + commit('SET_ROUTERS', accessedRouters) + resolve() + }) + }, + // 动态添加主界面路由,需要缓存 + UpdateAppRouter({ commit }, routes) { + return new Promise(resolve => { + //const [ roles ] = routes.constRoutes + let routelist = routes.constRoutes; + commit('SET_ROUTERS', routelist) + resolve() + }) + } + } +} + +export default permission \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/store/modules/user.js b/ant-design-vue-jeecg/src/store/modules/user.js new file mode 100644 index 0000000..e435d09 --- /dev/null +++ b/ant-design-vue-jeecg/src/store/modules/user.js @@ -0,0 +1,234 @@ +import Vue from 'vue' +import { login, logout, phoneLogin, thirdLogin ,loginFun} from "@/api/login" +import { ACCESS_TOKEN, USER_NAME,USER_INFO,USER_AUTH,SYS_BUTTON_AUTH,UI_CACHE_DB_DICT_DATA,TENANT_ID,CACHE_INCLUDED_ROUTES } from "@/store/mutation-types" +import { welcome } from "@/utils/util" +import { queryPermissionsByUser } from '@/api/api' +import { getAction } from '@/api/manage' + +const user = { + state: { + token: '', + username: '', + realname: '', + tenantid:'', + welcome: '', + avatar: '', + permissionList: [], + info: {} + }, + + mutations: { + SET_TOKEN: (state, token) => { + state.token = token + }, + SET_NAME: (state, { username, realname, welcome }) => { + state.username = username + state.realname = realname + state.welcome = welcome + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar + }, + SET_PERMISSIONLIST: (state, permissionList) => { + state.permissionList = permissionList + }, + SET_INFO: (state, info) => { + state.info = info + }, + SET_TENANT: (state, id) => { + state.tenantid = id + }, + }, + + actions: { + // CAS验证登录 + ValidateLogin({ commit }, userInfo) { + return new Promise((resolve, reject) => { + getAction("/sys/cas/client/validateLogin",userInfo).then(response => { + console.log("----cas 登录--------",response); + if(response.success){ + const result = response.result + const userInfo = result.userInfo + Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', result.token) + commit('SET_INFO', userInfo) + commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) + commit('SET_AVATAR', userInfo.avatar) + resolve(response) + }else{ + resolve(response) + } + }).catch(error => { + reject(error) + }) + }) + }, + // 登录 + Login({ commit }, userInfo) { + return new Promise((resolve, reject) => { + login(userInfo).then(response => { + if(response.code =='200'){ + const result = response.result + const userInfo = result.userInfo + Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', result.token) + commit('SET_INFO', userInfo) + commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) + commit('SET_AVATAR', userInfo.avatar) + resolve(response) + }else{ + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + }, + + // 自定义登录 + LoginFun({ commit }, userInfo){ + return new Promise((resolve, reject) => { + loginFun(userInfo).then(response => { + if(response.code =='200'){ + const result = response.result + const userInfo = result.userInfo + Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000); + Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', result.token) + commit('SET_INFO', userInfo) + commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) + commit('SET_AVATAR', userInfo.avatar) + resolve(response) + }else{ + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + }, + + + //手机号登录 + PhoneLogin({ commit }, userInfo) { + return new Promise((resolve, reject) => { + phoneLogin(userInfo).then(response => { + if(response.code =='200'){ + const result = response.result + const userInfo = result.userInfo + Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', result.token) + commit('SET_INFO', userInfo) + commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) + commit('SET_AVATAR', userInfo.avatar) + resolve(response) + }else{ + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + }, + // 获取用户信息 + GetPermissionList({ commit }) { + return new Promise((resolve, reject) => { + queryPermissionsByUser().then(response => { + const menuData = response.result.menu; + const authData = response.result.auth; + const allAuthData = response.result.allAuth; + //Vue.ls.set(USER_AUTH,authData); + sessionStorage.setItem(USER_AUTH,JSON.stringify(authData)); + sessionStorage.setItem(SYS_BUTTON_AUTH,JSON.stringify(allAuthData)); + if (menuData && menuData.length > 0) { + //update--begin--autor:qinfeng-----date:20200109------for:JEECG-63 一级菜单的子菜单全部是隐藏路由,则一级菜单不显示------ + menuData.forEach((item, index) => { + if (item["children"]) { + let hasChildrenMenu = item["children"].filter((i) => { + return !i.hidden || i.hidden == false + }) + if (hasChildrenMenu == null || hasChildrenMenu.length == 0) { + item["hidden"] = true + } + } + }) + //console.log(" menu show json ", menuData) + //update--end--autor:qinfeng-----date:20200109------for:JEECG-63 一级菜单的子菜单全部是隐藏路由,则一级菜单不显示------ + commit('SET_PERMISSIONLIST', menuData) + } else { + reject('getPermissionList: permissions must be a non-null array !') + } + resolve(response) + }).catch(error => { + reject(error) + }) + }) + }, + + // 登出 + Logout({ commit, state }) { + return new Promise((resolve) => { + let logoutToken = state.token; + commit('SET_TOKEN', '') + commit('SET_PERMISSIONLIST', []) + Vue.ls.remove(ACCESS_TOKEN) + Vue.ls.remove(USER_INFO) + Vue.ls.remove(USER_NAME) + Vue.ls.remove(UI_CACHE_DB_DICT_DATA) + Vue.ls.remove(CACHE_INCLUDED_ROUTES) + //console.log('logoutToken: '+ logoutToken) + logout(logoutToken).then(() => { + if (process.env.VUE_APP_SSO == 'true') { + let sevice = 'http://' + window.location.host + '/' + let serviceUrl = encodeURIComponent(sevice) + window.location.href = process.env.VUE_APP_CAS_BASE_URL + '/logout?service=' + serviceUrl + } + resolve() + }).catch(() => { + resolve() + }) + }) + }, + // 第三方登录 + ThirdLogin({ commit }, param) { + return new Promise((resolve, reject) => { + thirdLogin(param.token,param.thirdType).then(response => { + if(response.code =='200'){ + const result = response.result + const userInfo = result.userInfo + Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', result.token) + commit('SET_INFO', userInfo) + commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) + commit('SET_AVATAR', userInfo.avatar) + resolve(response) + }else{ + reject(response) + } + }).catch(error => { + reject(error) + }) + }) + }, + saveTenant({ commit }, id){ + Vue.ls.set(TENANT_ID, id, 7 * 24 * 60 * 60 * 1000) + commit('SET_TENANT', id) + } + + + } +} + +export default user \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/store/mutation-types.js b/ant-design-vue-jeecg/src/store/mutation-types.js new file mode 100644 index 0000000..572da8e --- /dev/null +++ b/ant-design-vue-jeecg/src/store/mutation-types.js @@ -0,0 +1,27 @@ +export const ACCESS_TOKEN = 'Access-Token' +export const SIDEBAR_TYPE = 'SIDEBAR_TYPE' +export const DEFAULT_THEME = 'DEFAULT_THEME' +export const DEFAULT_LAYOUT_MODE = 'DEFAULT_LAYOUT_MODE' +export const DEFAULT_COLOR = 'DEFAULT_COLOR' +export const DEFAULT_COLOR_WEAK = 'DEFAULT_COLOR_WEAK' +export const DEFAULT_FIXED_HEADER = 'DEFAULT_FIXED_HEADER' +export const DEFAULT_FIXED_SIDEMENU= 'DEFAULT_FIXED_SIDEMENU' +export const DEFAULT_FIXED_HEADER_HIDDEN = 'DEFAULT_FIXED_HEADER_HIDDEN' +export const DEFAULT_CONTENT_WIDTH_TYPE = 'DEFAULT_CONTENT_WIDTH_TYPE' +export const DEFAULT_MULTI_PAGE = 'DEFAULT_MULTI_PAGE' +export const USER_NAME = 'Login_Username' +export const USER_INFO = 'Login_Userinfo' +export const USER_AUTH = 'LOGIN_USER_BUTTON_AUTH' +export const SYS_BUTTON_AUTH = 'SYS_BUTTON_AUTH' +export const ENCRYPTED_STRING = 'ENCRYPTED_STRING' +export const ENHANCE_PRE = 'enhance_' +export const UI_CACHE_DB_DICT_DATA = 'UI_CACHE_DB_DICT_DATA' +export const INDEX_MAIN_PAGE_PATH = '/defaultDocSearch' +export const TENANT_ID = 'TENANT_ID' +export const ONL_AUTH_FIELDS = 'ONL_AUTH_FIELDS' +//路由缓存问题,关闭了tab页时再打开就不刷新 #842 +export const CACHE_INCLUDED_ROUTES = 'CACHE_INCLUDED_ROUTES' +export const CONTENT_WIDTH_TYPE = { + Fluid: 'Fluid', + Fixed: 'Fixed' +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/JEditableTableUtil.js b/ant-design-vue-jeecg/src/utils/JEditableTableUtil.js new file mode 100644 index 0000000..5f89dab --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/JEditableTableUtil.js @@ -0,0 +1,153 @@ +import { getVmParentByName } from '@/utils/util' + +const FormTypes = { + normal: 'normal', + input: 'input', + inputNumber: 'inputNumber', + checkbox: 'checkbox', + select: 'select', + date: 'date', + datetime: 'datetime', + upload: 'upload', + file: 'file', + image: 'image', + popup:'popup', + list_multi:"list_multi", + sel_search:"sel_search", + sel_search_async:"sel_search_async", + radio:'radio', + checkbox_meta:"checkbox_meta", + input_pop:'input_pop', + sel_depart: 'sel_depart', + sel_user: 'sel_user', + slot: 'slot', + hidden: 'hidden' +} +const VALIDATE_NO_PASSED = Symbol() +export { FormTypes, VALIDATE_NO_PASSED } + +/** + * 获取指定的 $refs 对象 + * 有时候可能会遇到组件未挂载到页面中的情况,导致无法获取 $refs 中的某个对象 + * 这个方法可以等待挂载完成之后再返回 $refs 的对象,避免报错 + * @author sunjianlei + **/ +export function getRefPromise(vm, name) { + return new Promise((resolve) => { + (function next() { + let ref = vm.$refs[name] + if (ref) { + resolve(ref) + } else { + setTimeout(() => { + next() + }, 10) + } + })() + }) +} + +/** + * 一次性验证主表单和所有的次表单 + * @param form 主表单 form 对象 + * @param cases 接收一个数组,每项都是一个JEditableTable实例 + * @returns {Promise} + * @author sunjianlei + */ +export function validateFormAndTables(form, cases) { + + if (!(form && typeof form.validateFields === 'function')) { + throw `form 参数需要的是一个form对象,而传入的却是${typeof form}` + } + + let options = {} + return new Promise((resolve, reject) => { + // 验证主表表单 + form.validateFields((err, values) => { + err ? reject({ error: VALIDATE_NO_PASSED }) : resolve(values) + }) + }).then(values => { + Object.assign(options, { formValue: values }) + // 验证所有子表的表单 + return validateTables(cases) + }).then(all => { + Object.assign(options, { tablesValue: all }) + return Promise.resolve(options) + }).catch(error => { + return Promise.reject(error) + }) + +} +/** + * 一次性验证主表单和所有的次表单(新版本) + * @param form 主表单 form 对象 + * @param cases 接收一个数组,每项都是一个JEditableTable实例 + * @returns {Promise} + * @author sunjianlei + */ +export function validateFormModelAndTables(form,values, cases) { + + if (!(form && typeof form.validate === 'function')) { + throw `form 参数需要的是一个form对象,而传入的却是${typeof form}` + } + let options = {} + return new Promise((resolve, reject) => { + // 验证主表表单 + form.validate((valid,obj) => { + valid ?resolve(values):reject({ error: VALIDATE_NO_PASSED }) + }) + }).then(values => { + Object.assign(options, { formValue: values }) + // 验证所有子表的表单 + return validateTables(cases) + }).then(all => { + Object.assign(options, { tablesValue: all }) + return Promise.resolve(options) + }).catch(error => { + return Promise.reject(error) + }) + +} + +/** + * 验证并获取一个或多个表格的所有值 + * @param cases 接收一个数组,每项都是一个JEditableTable实例 + * @param deleteTempId 是否删除临时ID,如果设为true,行编辑就不返回新增行的ID,ID需要后台生成 + * @author sunjianlei + */ +export function validateTables(cases, deleteTempId) { + if (!(cases instanceof Array)) { + throw `'validateTables'函数的'cases'参数需要的是一个数组,而传入的却是${typeof cases}` + } + return new Promise((resolve, reject) => { + let tables = [] + let index = 0; + if(!cases || cases.length === 0){ + resolve() + } + (function next() { + let vm = cases[index] + vm.getAll(true, deleteTempId).then(all => { + tables[index] = all + // 判断校验是否全部完成,完成返回成功,否则继续进行下一步校验 + if (++index === cases.length) { + resolve(tables) + } else ( + next() + ) + }, error => { + // 出现未验证通过的表单,不再进行下一步校验,直接返回失败并跳转到该表格 + if (error === VALIDATE_NO_PASSED) { + // 尝试获取tabKey,如果在ATab组件内即可获取 + let paneKey; + let tabPane = getVmParentByName(vm, 'ATabPane') + if (tabPane) { + paneKey = tabPane.$vnode.key + } + reject({error: VALIDATE_NO_PASSED, index, paneKey}) + } + reject(error) + }) + })() + }) +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/LunarFullCalendarUtil.js b/ant-design-vue-jeecg/src/utils/LunarFullCalendarUtil.js new file mode 100644 index 0000000..e68eb63 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/LunarFullCalendarUtil.js @@ -0,0 +1,107 @@ +/** + * LunarFullCalendar 公共 js + * + * @version 1.0.0 + * @author sunjianlei + * + * */ + +import { getRefPromise } from '@/utils/JEditableTableUtil' + +/* 日历的视图类型 */ +const calendarViewType = { + month: 'month', // 月视图 + basicWeek: 'basicWeek', // 基础周视图 + basicDay: 'basicDay',// 基础天视图 + agendaWeek: 'agendaWeek', // 议程周视图 + agendaDay: 'agendaDay', // 议程天视图 +} + +/* 定义默认视图 */ +const defaultView = calendarViewType.month + +/* 定义日历默认配置 */ +const defaultSettings = { + locale: 'zh-cn', + // 按钮文字 + buttonText: { + today: '今天', + month: '月', + week: '周', + day: '日' + }, + // 头部排列方式 + header: { + left: 'prev,next, today', + center: 'title', + right: 'hide, custom, month,agendaWeek,agendaDay' + }, + //点击今天日列表图 + eventLimitClick: 'day', + // 隐藏超出的事件 + eventLimit: true, + // 设置每周开始日期为周日 + firstDay: 0, + // 默认显示视图 + defaultView, + timeFormat: 'H:mm', + axisFormat: 'H:mm', + // agenda视图下是否显示all-day + allDaySlot: true, + // agenda视图下all-day的显示文本 + allDayText: '全天', + // 时区默认本地的 + timezone: 'local', + // 周视图和日视同的左侧时间显示 + slotLabelFormat: 'HH:mm', + // 设置第二天阈值 + nextDayThreshold: '00:00:00', +} + +/** 提供了一些增强方法 */ +const CalendarMixins = { + data() { + return { + calenderCurrentViewType: defaultView + } + }, + methods: { + + getCalendarConfigEventHandler() { + return { + // 处理 view changed 事件 + viewRender: (view, element) => { + let { type } = view + + let lastViewType = this.calenderCurrentViewType + this.calenderCurrentViewType = type + + if (typeof this.handleViewRender === 'function') { + this.handleViewRender(type, view, element) + } + + if (lastViewType !== this.calenderCurrentViewType && typeof this.handleViewChanged === 'function') { + this.handleViewChanged(type, view, element) + } + + }, + } + }, + + /** 获取 LunarFullCalendar 实例,ref = baseCalendar */ + getCalendar(fn) { + return getRefPromise(this, 'baseCalendar').then(fn) + }, + + calendarEmit(name, data) { + this.getCalendar(ref => ref.$emit(name, data)) + }, + + /** 强制重新加载所有的事件(日程)*/ + calendarReloadEvents() { + this.calendarEmit('reload-events') + } + } +} + +export { defaultSettings, calendarViewType, CalendarMixins } \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/auth.js b/ant-design-vue-jeecg/src/utils/auth.js new file mode 100644 index 0000000..03ae469 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/auth.js @@ -0,0 +1,19 @@ +/** + * 弃用 + */ +import { setStore, getStore, clearStore } from "@/utils/storage" + +export const TokenKey = 'Access-Token' + +export function getToken() { + return getStore(TokenKey) +} + +export function setToken(token) { + // key, token, timeout = 86400s + return setStore(TokenKey, token, 86400) +} + +export function removeToken() { + return clearStore(TokenKey) +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/authFilter.js b/ant-design-vue-jeecg/src/utils/authFilter.js new file mode 100644 index 0000000..ed910bb --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/authFilter.js @@ -0,0 +1,277 @@ +import { USER_AUTH,SYS_BUTTON_AUTH } from "@/store/mutation-types" + +export function disabledAuthFilter(code,formData) { + if(nodeDisabledAuth(code,formData)){ + return true; + }else{ + return globalDisabledAuth(code); + } +} + +function nodeDisabledAuth(code,formData){ + //console.log("页面权限禁用--NODE--开始"); + let permissionList = []; + try { + //console.log("页面权限禁用--NODE--开始",formData); + if (formData) { + let bpmList = formData.permissionList; + permissionList = bpmList.filter(item=>item.type=='2') + // for (let bpm of bpmList) { + // if(bpm.type == '2') { + // permissionList.push(bpm); + // } + // } + }else{ + return false; + } + } catch (e) { + //console.log("页面权限异常----", e); + } + if (permissionList.length == 0) { + return false; + } + + console.log("流程节点页面权限禁用--NODE--开始"); + let permissions = []; + for (let item of permissionList) { + if(item.type == '2') { + permissions.push(item.action); + } + } + //console.log("页面权限----"+code); + if (!permissions.includes(code)) { + return false; + }else{ + for (let item2 of permissionList) { + if(code === item2.action){ + console.log("流程节点页面权限禁用--NODE--生效"); + return true; + } + } + } + return false; +} + +function globalDisabledAuth(code){ + //console.log("全局页面禁用权限--Global--开始"); + + let permissionList = []; + let allPermissionList = []; + + //let authList = Vue.ls.get(USER_AUTH); + let authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]"); + for (let auth of authList) { + if(auth.type == '2') { + permissionList.push(auth); + } + } + //console.log("页面禁用权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH)); + let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]"); + for (let gauth of allAuthList) { + if(gauth.type == '2') { + allPermissionList.push(gauth); + } + } + //设置全局配置是否有命中 + let gFlag = false;//禁用命中 + let invalidFlag = false;//无效命中 + if(allPermissionList != null && allPermissionList != "" && allPermissionList != undefined && allPermissionList.length > 0){ + for (let itemG of allPermissionList) { + if(code === itemG.action){ + if(itemG.status == '0'){ + invalidFlag = true; + break; + }else{ + gFlag = true; + break; + } + } + } + } + if(invalidFlag){ + return false; + } + if (permissionList === null || permissionList === "" || permissionList === undefined||permissionList.length<=0) { + return gFlag; + } + let permissions = []; + for (let item of permissionList) { + if(item.type == '2') { + permissions.push(item.action); + } + } + //console.log("页面禁用权限----"+code); + if (!permissions.includes(code)) { + return gFlag; + }else{ + for (let item2 of permissionList) { + if(code === item2.action){ + //console.log("全局页面权限解除禁用--Global--生效"); + gFlag = false; + } + } + return gFlag; + } +} + + + +export function colAuthFilter(columns,pre) { + let authList = getNoAuthCols(pre); + const cols = columns.filter(item => { + if (hasColoum(item,authList)) { + return true + } + return false + }) + return cols +} + +/** + * 【子表行编辑】实现两个功能: + * 1、隐藏JEditableTable无权限的字段 + * 2、禁用JEditableTable无权限的字段 + * @param columns + * @param pre + * @returns {*} + */ +export function colAuthFilterJEditableTable(columns,pre) { + let authList = getAllShowAndDisabledAuthCols(pre); + const cols = columns.filter(item => { + let oneAuth = authList.find(auth => { + return auth.action === pre + item.key; + }); + if(!oneAuth){ + return true + } + + //代码严谨处理,防止一个授权标识,配置多次 + if(oneAuth instanceof Array){ + oneAuth = oneAuth[0] + } + + //禁用逻辑 + if (oneAuth.type == '2' && !oneAuth.isAuth) { + item["disabled"] = true + return true + } + //隐藏逻辑逻辑 + if (oneAuth.type == '1' && !oneAuth.isAuth) { + return false + } + return true + }) + return cols +} + + +function hasColoum(item,authList){ + if (authList.includes(item.dataIndex)) { + return false + } + return true +} + +//权限无效时不做控制,有效时控制,只能控制 显示不显示 +//根据授权码前缀获取未授权的列信息 +export function getNoAuthCols(pre){ + if(!pre || pre.length==0){ + return [] + } + let permissionList = []; + let allPermissionList = []; + + //let authList = Vue.ls.get(USER_AUTH); + let authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]"); + for (let auth of authList) { + //显示策略,有效状态 + if(auth.type == '1'&&startWith(auth.action,pre)) { + permissionList.push(substrPre(auth.action,pre)); + } + } + //console.log("页面禁用权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH)); + let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]"); + for (let gauth of allAuthList) { + //显示策略,有效状态 + if(gauth.type == '1'&&gauth.status == '1'&&startWith(gauth.action,pre)) { + allPermissionList.push(substrPre(gauth.action,pre)); + } + } + const cols = allPermissionList.filter(item => { + if (permissionList.includes(item)) { + return false; + } + return true; + }) + return cols; +} + +/** + * 将Online的行编辑按钮权限,添加至本地存储 + */ +export function addOnlineBtAuth2Storage(pre, authList){ + let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]"); + let newAuthList = allAuthList.filter(item=>{ + if(!item.action){ + return true + } + return item.action.indexOf(pre)<0 + }) + if(authList && authList.length>0){ + for(let item of authList){ + newAuthList.push({ + action: pre+item, + type:1, + status:1 + }) + } + let temp = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]"); + let newArr = temp.filter(item=>{ + if(!item.action){ + return true + } + return item.action.indexOf(pre)<0 || authList.indexOf(item.action.replace(pre, ''))<0 + }) + sessionStorage.setItem(USER_AUTH, JSON.stringify(newArr)) + } + sessionStorage.setItem(SYS_BUTTON_AUTH, JSON.stringify(newAuthList)) +} + + + +/** + * 额外增加方法【用于行编辑组件】 + * date: 2020-04-05 + * author: scott + * @param pre + * @returns {*[]} + */ +function getAllShowAndDisabledAuthCols(pre){ + //用户拥有的权限 + let userAuthList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]"); + //全部权限配置 + let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]"); + + let newAllAuthList = allAuthList.map(function (item, index) { + let hasAuthArray = userAuthList.filter(u => u.action===item.action ); + if (hasAuthArray && hasAuthArray.length>0) { + item["isAuth"] = true + } + return item; + }) + + return newAllAuthList; +} + +function startWith(str,pre) { + if (pre == null || pre == "" || str==null|| str==""|| str.length == 0 || pre.length > str.length) + return false; + if (str.substr(0, pre.length) == pre) + return true; + else + return false; +} + +function substrPre(str,pre) { + return str.substr(pre.length); +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/axios.js b/ant-design-vue-jeecg/src/utils/axios.js new file mode 100644 index 0000000..de27d4c --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/axios.js @@ -0,0 +1,37 @@ +const VueAxios = { + vm: {}, + // eslint-disable-next-line no-unused-vars + install(Vue, router = {}, instance) { + if (this.installed) { + return; + } + this.installed = true; + + if (!instance) { + // eslint-disable-next-line no-console + console.error('You have to install axios'); + return; + } + + Vue.axios = instance; + + Object.defineProperties(Vue.prototype, { + axios: { + get: function get() { + return instance; + } + }, + $http: { + get: function get() { + return instance; + } + } + }); + } +}; + +export { + VueAxios, + // eslint-disable-next-line no-undef + //instance as axios +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/browser.js b/ant-design-vue-jeecg/src/utils/browser.js new file mode 100644 index 0000000..97f232e --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/browser.js @@ -0,0 +1,38 @@ +//判断是否IE<11浏览器 +export function isIE() { + return navigator.userAgent.indexOf('compatible') > -1 && navigator.userAgent.indexOf('MSIE') > -1 + +} + +export function isIE11() { + return navigator.userAgent.indexOf('Trident') > -1 && navigator.userAgent.indexOf('rv:11.0') > -1 +} + +//判断是否IE的Edge浏览器 +export function isEdge() { + return navigator.userAgent.indexOf('Edge') > -1 && !isIE() +} + +export function getIEVersion() { + let userAgent = navigator.userAgent //取得浏览器的userAgent字符串 + let isIE = isIE() + let isIE11 = isIE11() + let isEdge = isEdge() + + if (isIE) { + let reIE = new RegExp('MSIE (\\d+\\.\\d+);') + reIE.test(userAgent) + let fIEVersion = parseFloat(RegExp['$1']) + if (fIEVersion === 7 || fIEVersion === 8 || fIEVersion === 9 || fIEVersion === 10) { + return fIEVersion + } else { + return 6//IE版本<7 + } + } else if (isEdge) { + return 'edge' + } else if (isIE11) { + return 11 + } else { + return -1 + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/commonUploadFile.js b/ant-design-vue-jeecg/src/utils/commonUploadFile.js new file mode 100644 index 0000000..eaa6dbb --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/commonUploadFile.js @@ -0,0 +1,52 @@ +import { getFileAccessHttpUrl } from '@/api/manage' +const getFileName=(path)=>{ + if(path.lastIndexOf("\\")>=0){ + let reg=new RegExp("\\\\","g"); + path = path.replace(reg,"/"); + } + return path.substring(path.lastIndexOf("/")+1); +} + +const uidGenerator=()=>{ + return '-'+parseInt(Math.random()*10000+1,10); +} + +const getFilePaths=(uploadFiles)=>{ + let arr = []; + if(!uploadFiles){ + return "" + } + for(let a=0;a0){ + return arr.join(",") + } + return "" +} + +const getUploadFileList=(paths)=>{ + if(!paths){ + return []; + } + let fileList = []; + let arr = paths.split(",") + for(let a=0;a content(arg) + ' | 北京市'; // export 箭头函数也可以 +* +*/ + +/** 字段默认值官方示例:获取地址 */ +export function demoFieldDefVal_getAddress(arg) { + if (!arg) { + arg = '朝阳区' + } + return `北京市 ${arg}` +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/device.js b/ant-design-vue-jeecg/src/utils/device.js new file mode 100644 index 0000000..6bf15fc --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/device.js @@ -0,0 +1,23 @@ +import enquireJs from 'enquire.js' + +const enquireScreen = function (call) { + // tablet + const handler = { + match: function () { + call && call(0) + }, + unmatch: function () { + call && call(-1) + } + } + // mobile + const handler2 = { + match: () => { + call && call(1) + } + } + enquireJs.register('screen and (max-width: 1087.99px)', handler) + enquireJs.register('screen and (max-width: 767.99px)', handler2) +} + +export default enquireScreen \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/encryption/aesEncrypt.js b/ant-design-vue-jeecg/src/utils/encryption/aesEncrypt.js new file mode 100644 index 0000000..07638cf --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/encryption/aesEncrypt.js @@ -0,0 +1,6003 @@ +import { getAction } from '@/api/manage' +import { ENCRYPTED_STRING } from "@/store/mutation-types" +import Vue from 'vue' + +/** + * 获取加密字符串,并对结果进行缓存 + */ +export function getEncryptedString() { + return getAction("/sys/getEncryptedString",{}).then((res)=>{ + let encryptedString = {}; + encryptedString.key = res.result.key; + encryptedString.iv = res.result.iv; + Vue.ls.set(ENCRYPTED_STRING, encryptedString, 7 * 24 * 60 * 60 * 1000); + return encryptedString; + }); +} + +/** + * AES加密 :字符串 key iv 返回base64 + */ +export function encryption(word, keyStr, ivStr) { + + let key = CryptoJS.enc.Utf8.parse(keyStr) + let iv = CryptoJS.enc.Utf8.parse(ivStr) + + let srcs = CryptoJS.enc.Utf8.parse(word); + var encrypted = CryptoJS.AES.encrypt(srcs, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.ZeroPadding + }); + // console.log("-=-=-=-", encrypted.ciphertext) + return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); + +} + + +var CryptoJS = CryptoJS || (function (Math, undefined) { + /* + * Local polyfil of Object.create + */ + var create = Object.create || (function () { + function F() {}; + + return function (obj) { + var subtype; + + F.prototype = obj; + + subtype = new F(); + + F.prototype = null; + + return subtype; + }; + }()) + + /** + * CryptoJS namespace. + */ + var C = {}; + + /** + * Library namespace. + */ + var C_lib = C.lib = {}; + + /** + * Base object for prototypal inheritance. + */ + var Base = C_lib.Base = (function () { + + + return { + /** + * Creates a new object that inherits from this object. + * + * @param {Object} overrides Properties to copy into the new object. + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * field: 'value', + * + * method: function () { + * } + * }); + */ + extend: function (overrides) { + // Spawn + var subtype = create(this); + + // Augment + if (overrides) { + subtype.mixIn(overrides); + } + + // Create default initializer + if (!subtype.hasOwnProperty('init') || this.init === subtype.init) { + subtype.init = function () { + subtype.$super.init.apply(this, arguments); + }; + } + + // Initializer's prototype is the subtype object + subtype.init.prototype = subtype; + + // Reference supertype + subtype.$super = this; + + return subtype; + }, + + /** + * Extends this object and runs the init method. + * Arguments to create() will be passed to init(). + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var instance = MyType.create(); + */ + create: function () { + var instance = this.extend(); + instance.init.apply(instance, arguments); + + return instance; + }, + + /** + * Initializes a newly created object. + * Override this method to add some logic when your objects are created. + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * init: function () { + * // ... + * } + * }); + */ + init: function () { + }, + + /** + * Copies properties into this object. + * + * @param {Object} properties The properties to mix in. + * + * @example + * + * MyType.mixIn({ + * field: 'value' + * }); + */ + mixIn: function (properties) { + for (var propertyName in properties) { + if (properties.hasOwnProperty(propertyName)) { + this[propertyName] = properties[propertyName]; + } + } + + // IE won't copy toString using the loop above + if (properties.hasOwnProperty('toString')) { + this.toString = properties.toString; + } + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = instance.clone(); + */ + clone: function () { + return this.init.prototype.extend(this); + } + }; + }()); + + /** + * An array of 32-bit words. + * + * @property {Array} words The array of 32-bit words. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var WordArray = C_lib.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of 32-bit words. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.create(); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); + */ + init: function (words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 4; + } + }, + + /** + * Converts this word array to a string. + * + * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex + * + * @return {string} The stringified word array. + * + * @example + * + * var string = wordArray + ''; + * var string = wordArray.toString(); + * var string = wordArray.toString(CryptoJS.enc.Utf8); + */ + toString: function (encoder) { + return (encoder || Hex).stringify(this); + }, + + /** + * Concatenates a word array to this word array. + * + * @param {WordArray} wordArray The word array to append. + * + * @return {WordArray} This word array. + * + * @example + * + * wordArray1.concat(wordArray2); + */ + concat: function (wordArray) { + // Shortcuts + var thisWords = this.words; + var thatWords = wordArray.words; + var thisSigBytes = this.sigBytes; + var thatSigBytes = wordArray.sigBytes; + + // Clamp excess bits + this.clamp(); + + // Concat + if (thisSigBytes % 4) { + // Copy one byte at a time + for (var i = 0; i < thatSigBytes; i++) { + var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); + } + } else { + // Copy one word at a time + for (var i = 0; i < thatSigBytes; i += 4) { + thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]; + } + } + this.sigBytes += thatSigBytes; + + // Chainable + return this; + }, + + /** + * Removes insignificant bits. + * + * @example + * + * wordArray.clamp(); + */ + clamp: function () { + // Shortcuts + var words = this.words; + var sigBytes = this.sigBytes; + + // Clamp + words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); + words.length = Math.ceil(sigBytes / 4); + }, + + /** + * Creates a copy of this word array. + * + * @return {WordArray} The clone. + * + * @example + * + * var clone = wordArray.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone.words = this.words.slice(0); + + return clone; + }, + + /** + * Creates a word array filled with random bytes. + * + * @param {number} nBytes The number of random bytes to generate. + * + * @return {WordArray} The random word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.random(16); + */ + random: function (nBytes) { + var words = []; + + var r = (function (m_w) { + var m_w = m_w; + var m_z = 0x3ade68b1; + var mask = 0xffffffff; + + return function () { + m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask; + m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask; + var result = ((m_z << 0x10) + m_w) & mask; + result /= 0x100000000; + result += 0.5; + return result * (Math.random() > .5 ? 1 : -1); + } + }); + + for (var i = 0, rcache; i < nBytes; i += 4) { + var _r = r((rcache || Math.random()) * 0x100000000); + + rcache = _r() * 0x3ade67b7; + words.push((_r() * 0x100000000) | 0); + } + + return new WordArray.init(words, nBytes); + } + }); + + /** + * Encoder namespace. + */ + var C_enc = C.enc = {}; + + /** + * Hex encoding strategy. + */ + var Hex = C_enc.Hex = { + /** + * Converts a word array to a hex string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The hex string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.enc.Hex.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var hexChars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + hexChars.push((bite >>> 4).toString(16)); + hexChars.push((bite & 0x0f).toString(16)); + } + + return hexChars.join(''); + }, + + /** + * Converts a hex string to a word array. + * + * @param {string} hexStr The hex string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Hex.parse(hexString); + */ + parse: function (hexStr) { + // Shortcut + var hexStrLength = hexStr.length; + + // Convert + var words = []; + for (var i = 0; i < hexStrLength; i += 2) { + words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); + } + + return new WordArray.init(words, hexStrLength / 2); + } + }; + + /** + * Latin1 encoding strategy. + */ + var Latin1 = C_enc.Latin1 = { + /** + * Converts a word array to a Latin1 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Latin1 string. + * + * @static + * + * @example + * + * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var latin1Chars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + latin1Chars.push(String.fromCharCode(bite)); + } + + return latin1Chars.join(''); + }, + + /** + * Converts a Latin1 string to a word array. + * + * @param {string} latin1Str The Latin1 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); + */ + parse: function (latin1Str) { + // Shortcut + var latin1StrLength = latin1Str.length; + + // Convert + var words = []; + for (var i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); + } + + return new WordArray.init(words, latin1StrLength); + } + }; + + /** + * UTF-8 encoding strategy. + */ + var Utf8 = C_enc.Utf8 = { + /** + * Converts a word array to a UTF-8 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-8 string. + * + * @static + * + * @example + * + * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); + */ + stringify: function (wordArray) { + try { + return decodeURIComponent(escape(Latin1.stringify(wordArray))); + } catch (e) { + throw new Error('Malformed UTF-8 data'); + } + }, + + /** + * Converts a UTF-8 string to a word array. + * + * @param {string} utf8Str The UTF-8 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); + */ + parse: function (utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + } + }; + + /** + * Abstract buffered block algorithm template. + * + * The property blockSize must be implemented in a concrete subtype. + * + * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 + */ + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ + /** + * Resets this block algorithm's data buffer to its initial state. + * + * @example + * + * bufferedBlockAlgorithm.reset(); + */ + reset: function () { + // Initial values + this._data = new WordArray.init(); + this._nDataBytes = 0; + }, + + /** + * Adds new data to this block algorithm's buffer. + * + * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. + * + * @example + * + * bufferedBlockAlgorithm._append('data'); + * bufferedBlockAlgorithm._append(wordArray); + */ + _append: function (data) { + // Convert string to WordArray, else assume WordArray already + if (typeof data == 'string') { + data = Utf8.parse(data); + } + + // Append + this._data.concat(data); + this._nDataBytes += data.sigBytes; + }, + + /** + * Processes available data blocks. + * + * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. + * + * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. + * + * @return {WordArray} The processed data. + * + * @example + * + * var processedData = bufferedBlockAlgorithm._process(); + * var processedData = bufferedBlockAlgorithm._process(!!'flush'); + */ + _process: function (doFlush) { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var dataSigBytes = data.sigBytes; + var blockSize = this.blockSize; + var blockSizeBytes = blockSize * 4; + + // Count blocks ready + var nBlocksReady = dataSigBytes / blockSizeBytes; + if (doFlush) { + // Round up to include partial blocks + nBlocksReady = Math.ceil(nBlocksReady); + } else { + // Round down to include only full blocks, + // less the number of blocks that must remain in the buffer + nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + + // Count words ready + var nWordsReady = nBlocksReady * blockSize; + + // Count bytes ready + var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); + + // Process blocks + if (nWordsReady) { + for (var offset = 0; offset < nWordsReady; offset += blockSize) { + // Perform concrete-algorithm logic + this._doProcessBlock(dataWords, offset); + } + + // Remove processed words + var processedWords = dataWords.splice(0, nWordsReady); + data.sigBytes -= nBytesReady; + } + + // Return processed words + return new WordArray.init(processedWords, nBytesReady); + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = bufferedBlockAlgorithm.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone._data = this._data.clone(); + + return clone; + }, + + _minBufferSize: 0 + }); + + /** + * Abstract hasher template. + * + * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) + */ + var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + */ + cfg: Base.extend(), + + /** + * Initializes a newly created hasher. + * + * @param {Object} cfg (Optional) The configuration options to use for this hash computation. + * + * @example + * + * var hasher = CryptoJS.algo.SHA256.create(); + */ + init: function (cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Set initial values + this.reset(); + }, + + /** + * Resets this hasher to its initial state. + * + * @example + * + * hasher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-hasher logic + this._doReset(); + }, + + /** + * Updates this hasher with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {Hasher} This hasher. + * + * @example + * + * hasher.update('message'); + * hasher.update(wordArray); + */ + update: function (messageUpdate) { + // Append + this._append(messageUpdate); + + // Update the hash + this._process(); + + // Chainable + return this; + }, + + /** + * Finalizes the hash computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The hash. + * + * @example + * + * var hash = hasher.finalize(); + * var hash = hasher.finalize('message'); + * var hash = hasher.finalize(wordArray); + */ + finalize: function (messageUpdate) { + // Final message update + if (messageUpdate) { + this._append(messageUpdate); + } + + // Perform concrete-hasher logic + var hash = this._doFinalize(); + + return hash; + }, + + blockSize: 512/32, + + /** + * Creates a shortcut function to a hasher's object interface. + * + * @param {Hasher} hasher The hasher to create a helper for. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); + */ + _createHelper: function (hasher) { + return function (message, cfg) { + return new hasher.init(cfg).finalize(message); + }; + }, + + /** + * Creates a shortcut function to the HMAC's object interface. + * + * @param {Hasher} hasher The hasher to use in this HMAC helper. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); + */ + _createHmacHelper: function (hasher) { + return function (message, key) { + return new C_algo.HMAC.init(hasher, key).finalize(message); + }; + } + }); + + /** + * Algorithm namespace. + */ + var C_algo = C.algo = {}; + + return C; +}(Math)); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64 encoding strategy. + */ + var Base64 = C_enc.Base64 = { + /** + * Converts a word array to a Base64 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Base64 string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64 string to a word array. + * + * @param {string} base64Str The Base64 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64.parse(base64String); + */ + parse: function (base64Str) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = this._map; + var reverseMap = this._reverseMap; + + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' + }; + + function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + } +}()); + + +(function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var T = []; + + // Compute constants + (function () { + for (var i = 0; i < 64; i++) { + T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; + } + }()); + + /** + * MD5 hash algorithm. + */ + var MD5 = C_algo.MD5 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476 + ]); + }, + + _doProcessBlock: function (M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + + // Shortcuts + var H = this._hash.words; + + var M_offset_0 = M[offset + 0]; + var M_offset_1 = M[offset + 1]; + var M_offset_2 = M[offset + 2]; + var M_offset_3 = M[offset + 3]; + var M_offset_4 = M[offset + 4]; + var M_offset_5 = M[offset + 5]; + var M_offset_6 = M[offset + 6]; + var M_offset_7 = M[offset + 7]; + var M_offset_8 = M[offset + 8]; + var M_offset_9 = M[offset + 9]; + var M_offset_10 = M[offset + 10]; + var M_offset_11 = M[offset + 11]; + var M_offset_12 = M[offset + 12]; + var M_offset_13 = M[offset + 13]; + var M_offset_14 = M[offset + 14]; + var M_offset_15 = M[offset + 15]; + + // Working varialbes + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + + // Computation + a = FF(a, b, c, d, M_offset_0, 7, T[0]); + d = FF(d, a, b, c, M_offset_1, 12, T[1]); + c = FF(c, d, a, b, M_offset_2, 17, T[2]); + b = FF(b, c, d, a, M_offset_3, 22, T[3]); + a = FF(a, b, c, d, M_offset_4, 7, T[4]); + d = FF(d, a, b, c, M_offset_5, 12, T[5]); + c = FF(c, d, a, b, M_offset_6, 17, T[6]); + b = FF(b, c, d, a, M_offset_7, 22, T[7]); + a = FF(a, b, c, d, M_offset_8, 7, T[8]); + d = FF(d, a, b, c, M_offset_9, 12, T[9]); + c = FF(c, d, a, b, M_offset_10, 17, T[10]); + b = FF(b, c, d, a, M_offset_11, 22, T[11]); + a = FF(a, b, c, d, M_offset_12, 7, T[12]); + d = FF(d, a, b, c, M_offset_13, 12, T[13]); + c = FF(c, d, a, b, M_offset_14, 17, T[14]); + b = FF(b, c, d, a, M_offset_15, 22, T[15]); + + a = GG(a, b, c, d, M_offset_1, 5, T[16]); + d = GG(d, a, b, c, M_offset_6, 9, T[17]); + c = GG(c, d, a, b, M_offset_11, 14, T[18]); + b = GG(b, c, d, a, M_offset_0, 20, T[19]); + a = GG(a, b, c, d, M_offset_5, 5, T[20]); + d = GG(d, a, b, c, M_offset_10, 9, T[21]); + c = GG(c, d, a, b, M_offset_15, 14, T[22]); + b = GG(b, c, d, a, M_offset_4, 20, T[23]); + a = GG(a, b, c, d, M_offset_9, 5, T[24]); + d = GG(d, a, b, c, M_offset_14, 9, T[25]); + c = GG(c, d, a, b, M_offset_3, 14, T[26]); + b = GG(b, c, d, a, M_offset_8, 20, T[27]); + a = GG(a, b, c, d, M_offset_13, 5, T[28]); + d = GG(d, a, b, c, M_offset_2, 9, T[29]); + c = GG(c, d, a, b, M_offset_7, 14, T[30]); + b = GG(b, c, d, a, M_offset_12, 20, T[31]); + + a = HH(a, b, c, d, M_offset_5, 4, T[32]); + d = HH(d, a, b, c, M_offset_8, 11, T[33]); + c = HH(c, d, a, b, M_offset_11, 16, T[34]); + b = HH(b, c, d, a, M_offset_14, 23, T[35]); + a = HH(a, b, c, d, M_offset_1, 4, T[36]); + d = HH(d, a, b, c, M_offset_4, 11, T[37]); + c = HH(c, d, a, b, M_offset_7, 16, T[38]); + b = HH(b, c, d, a, M_offset_10, 23, T[39]); + a = HH(a, b, c, d, M_offset_13, 4, T[40]); + d = HH(d, a, b, c, M_offset_0, 11, T[41]); + c = HH(c, d, a, b, M_offset_3, 16, T[42]); + b = HH(b, c, d, a, M_offset_6, 23, T[43]); + a = HH(a, b, c, d, M_offset_9, 4, T[44]); + d = HH(d, a, b, c, M_offset_12, 11, T[45]); + c = HH(c, d, a, b, M_offset_15, 16, T[46]); + b = HH(b, c, d, a, M_offset_2, 23, T[47]); + + a = II(a, b, c, d, M_offset_0, 6, T[48]); + d = II(d, a, b, c, M_offset_7, 10, T[49]); + c = II(c, d, a, b, M_offset_14, 15, T[50]); + b = II(b, c, d, a, M_offset_5, 21, T[51]); + a = II(a, b, c, d, M_offset_12, 6, T[52]); + d = II(d, a, b, c, M_offset_3, 10, T[53]); + c = II(c, d, a, b, M_offset_10, 15, T[54]); + b = II(b, c, d, a, M_offset_1, 21, T[55]); + a = II(a, b, c, d, M_offset_8, 6, T[56]); + d = II(d, a, b, c, M_offset_15, 10, T[57]); + c = II(c, d, a, b, M_offset_6, 15, T[58]); + b = II(b, c, d, a, M_offset_13, 21, T[59]); + a = II(a, b, c, d, M_offset_4, 6, T[60]); + d = II(d, a, b, c, M_offset_11, 10, T[61]); + c = II(c, d, a, b, M_offset_2, 15, T[62]); + b = II(b, c, d, a, M_offset_9, 21, T[63]); + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + + var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); + var nBitsTotalL = nBitsTotal; + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( + (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | + (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) + ); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | + (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) + ); + + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 4; i++) { + // Shortcut + var H_i = H[i]; + + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + function FF(a, b, c, d, x, s, t) { + var n = a + ((b & c) | (~b & d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function GG(a, b, c, d, x, s, t) { + var n = a + ((b & d) | (c & ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function HH(a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function II(a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.MD5('message'); + * var hash = CryptoJS.MD5(wordArray); + */ + C.MD5 = Hasher._createHelper(MD5); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacMD5(message, key); + */ + C.HmacMD5 = Hasher._createHmacHelper(MD5); +}(Math)); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Reusable object + var W = []; + + /** + * SHA-1 hash algorithm. + */ + var SHA1 = C_algo.SHA1 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476, + 0xc3d2e1f0 + ]); + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + + // Computation + for (var i = 0; i < 80; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; + W[i] = (n << 1) | (n >>> 31); + } + + var t = ((a << 5) | (a >>> 27)) + e + W[i]; + if (i < 20) { + t += ((b & c) | (~b & d)) + 0x5a827999; + } else if (i < 40) { + t += (b ^ c ^ d) + 0x6ed9eba1; + } else if (i < 60) { + t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; + } else /* if (i < 80) */ { + t += (b ^ c ^ d) - 0x359d3e2a; + } + + e = d; + d = c; + c = (b << 30) | (b >>> 2); + b = a; + a = t; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA1('message'); + * var hash = CryptoJS.SHA1(wordArray); + */ + C.SHA1 = Hasher._createHelper(SHA1); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA1(message, key); + */ + C.HmacSHA1 = Hasher._createHmacHelper(SHA1); +}()); + + +(function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Initialization and round constants tables + var H = []; + var K = []; + + // Compute constants + (function () { + function isPrime(n) { + var sqrtN = Math.sqrt(n); + for (var factor = 2; factor <= sqrtN; factor++) { + if (!(n % factor)) { + return false; + } + } + + return true; + } + + function getFractionalBits(n) { + return ((n - (n | 0)) * 0x100000000) | 0; + } + + var n = 2; + var nPrime = 0; + while (nPrime < 64) { + if (isPrime(n)) { + if (nPrime < 8) { + H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); + } + K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); + + nPrime++; + } + + n++; + } + }()); + + // Reusable object + var W = []; + + /** + * SHA-256 hash algorithm. + */ + var SHA256 = C_algo.SHA256 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init(H.slice(0)); + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + var f = H[5]; + var g = H[6]; + var h = H[7]; + + // Computation + for (var i = 0; i < 64; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var gamma0x = W[i - 15]; + var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ + ((gamma0x << 14) | (gamma0x >>> 18)) ^ + (gamma0x >>> 3); + + var gamma1x = W[i - 2]; + var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ + ((gamma1x << 13) | (gamma1x >>> 19)) ^ + (gamma1x >>> 10); + + W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; + } + + var ch = (e & f) ^ (~e & g); + var maj = (a & b) ^ (a & c) ^ (b & c); + + var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); + var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); + + var t1 = h + sigma1 + ch + K[i] + W[i]; + var t2 = sigma0 + maj; + + h = g; + g = f; + f = e; + e = (d + t1) | 0; + d = c; + c = b; + b = a; + a = (t1 + t2) | 0; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + H[5] = (H[5] + f) | 0; + H[6] = (H[6] + g) | 0; + H[7] = (H[7] + h) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA256('message'); + * var hash = CryptoJS.SHA256(wordArray); + */ + C.SHA256 = Hasher._createHelper(SHA256); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA256(message, key); + */ + C.HmacSHA256 = Hasher._createHmacHelper(SHA256); +}(Math)); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * UTF-16 BE encoding strategy. + */ + var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { + /** + * Converts a word array to a UTF-16 BE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 BE string. + * + * @static + * + * @example + * + * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 BE string to a word array. + * + * @param {string} utf16Str The UTF-16 BE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); + */ + parse: function (utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + /** + * UTF-16 LE encoding strategy. + */ + C_enc.Utf16LE = { + /** + * Converts a word array to a UTF-16 LE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 LE string. + * + * @static + * + * @example + * + * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 LE string to a word array. + * + * @param {string} utf16Str The UTF-16 LE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); + */ + parse: function (utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + function swapEndian(word) { + return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); + } +}()); + + +(function () { + // Check if typed arrays are supported + if (typeof ArrayBuffer != 'function') { + return; + } + + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + + // Reference original init + var superInit = WordArray.init; + + // Augment WordArray.init to handle typed arrays + var subInit = WordArray.init = function (typedArray) { + // Convert buffers to uint8 + if (typedArray instanceof ArrayBuffer) { + typedArray = new Uint8Array(typedArray); + } + + // Convert other array views to uint8 + if ( + typedArray instanceof Int8Array || + (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || + typedArray instanceof Int16Array || + typedArray instanceof Uint16Array || + typedArray instanceof Int32Array || + typedArray instanceof Uint32Array || + typedArray instanceof Float32Array || + typedArray instanceof Float64Array + ) { + typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); + } + + // Handle Uint8Array + if (typedArray instanceof Uint8Array) { + // Shortcut + var typedArrayByteLength = typedArray.byteLength; + + // Extract bytes + var words = []; + for (var i = 0; i < typedArrayByteLength; i++) { + words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); + } + + // Initialize this word array + superInit.call(this, words, typedArrayByteLength); + } else { + // Else call normal init + superInit.apply(this, arguments); + } + }; + + subInit.prototype = WordArray; +}()); + + +/** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var _zl = WordArray.create([ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]); + var _zr = WordArray.create([ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]); + var _sl = WordArray.create([ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]); + var _sr = WordArray.create([ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]); + + var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]); + var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]); + + /** + * RIPEMD160 hash algorithm. + */ + var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({ + _doReset: function () { + this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); + }, + + _doProcessBlock: function (M, offset) { + + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + // Shortcut + var H = this._hash.words; + var hl = _hl.words; + var hr = _hr.words; + var zl = _zl.words; + var zr = _zr.words; + var sl = _sl.words; + var sr = _sr.words; + + // Working variables + var al, bl, cl, dl, el; + var ar, br, cr, dr, er; + + ar = al = H[0]; + br = bl = H[1]; + cr = cl = H[2]; + dr = dl = H[3]; + er = el = H[4]; + // Computation + var t; + for (var i = 0; i < 80; i += 1) { + t = (al + M[offset+zl[i]])|0; + if (i<16){ + t += f1(bl,cl,dl) + hl[0]; + } else if (i<32) { + t += f2(bl,cl,dl) + hl[1]; + } else if (i<48) { + t += f3(bl,cl,dl) + hl[2]; + } else if (i<64) { + t += f4(bl,cl,dl) + hl[3]; + } else {// if (i<80) { + t += f5(bl,cl,dl) + hl[4]; + } + t = t|0; + t = rotl(t,sl[i]); + t = (t+el)|0; + al = el; + el = dl; + dl = rotl(cl, 10); + cl = bl; + bl = t; + + t = (ar + M[offset+zr[i]])|0; + if (i<16){ + t += f5(br,cr,dr) + hr[0]; + } else if (i<32) { + t += f4(br,cr,dr) + hr[1]; + } else if (i<48) { + t += f3(br,cr,dr) + hr[2]; + } else if (i<64) { + t += f2(br,cr,dr) + hr[3]; + } else {// if (i<80) { + t += f1(br,cr,dr) + hr[4]; + } + t = t|0; + t = rotl(t,sr[i]) ; + t = (t+er)|0; + ar = er; + er = dr; + dr = rotl(cr, 10); + cr = br; + br = t; + } + // Intermediate hash value + t = (H[1] + cl + dr)|0; + H[1] = (H[2] + dl + er)|0; + H[2] = (H[3] + el + ar)|0; + H[3] = (H[4] + al + br)|0; + H[4] = (H[0] + bl + cr)|0; + H[0] = t; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ); + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 5; i++) { + // Shortcut + var H_i = H[i]; + + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + + function f1(x, y, z) { + return ((x) ^ (y) ^ (z)); + + } + + function f2(x, y, z) { + return (((x)&(y)) | ((~x)&(z))); + } + + function f3(x, y, z) { + return (((x) | (~(y))) ^ (z)); + } + + function f4(x, y, z) { + return (((x) & (z)) | ((y)&(~(z)))); + } + + function f5(x, y, z) { + return ((x) ^ ((y) |(~(z)))); + + } + + function rotl(x,n) { + return (x<>>(32-n)); + } + + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.RIPEMD160('message'); + * var hash = CryptoJS.RIPEMD160(wordArray); + */ + C.RIPEMD160 = Hasher._createHelper(RIPEMD160); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacRIPEMD160(message, key); + */ + C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); +}(Math)); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var C_algo = C.algo; + + /** + * HMAC algorithm. + */ + var HMAC = C_algo.HMAC = Base.extend({ + /** + * Initializes a newly created HMAC. + * + * @param {Hasher} hasher The hash algorithm to use. + * @param {WordArray|string} key The secret key. + * + * @example + * + * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); + */ + init: function (hasher, key) { + // Init hasher + hasher = this._hasher = new hasher.init(); + + // Convert string to WordArray, else assume WordArray already + if (typeof key == 'string') { + key = Utf8.parse(key); + } + + // Shortcuts + var hasherBlockSize = hasher.blockSize; + var hasherBlockSizeBytes = hasherBlockSize * 4; + + // Allow arbitrary length keys + if (key.sigBytes > hasherBlockSizeBytes) { + key = hasher.finalize(key); + } + + // Clamp excess bits + key.clamp(); + + // Clone key for inner and outer pads + var oKey = this._oKey = key.clone(); + var iKey = this._iKey = key.clone(); + + // Shortcuts + var oKeyWords = oKey.words; + var iKeyWords = iKey.words; + + // XOR keys with pad constants + for (var i = 0; i < hasherBlockSize; i++) { + oKeyWords[i] ^= 0x5c5c5c5c; + iKeyWords[i] ^= 0x36363636; + } + oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; + + // Set initial values + this.reset(); + }, + + /** + * Resets this HMAC to its initial state. + * + * @example + * + * hmacHasher.reset(); + */ + reset: function () { + // Shortcut + var hasher = this._hasher; + + // Reset + hasher.reset(); + hasher.update(this._iKey); + }, + + /** + * Updates this HMAC with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {HMAC} This HMAC instance. + * + * @example + * + * hmacHasher.update('message'); + * hmacHasher.update(wordArray); + */ + update: function (messageUpdate) { + this._hasher.update(messageUpdate); + + // Chainable + return this; + }, + + /** + * Finalizes the HMAC computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The HMAC. + * + * @example + * + * var hmac = hmacHasher.finalize(); + * var hmac = hmacHasher.finalize('message'); + * var hmac = hmacHasher.finalize(wordArray); + */ + finalize: function (messageUpdate) { + // Shortcut + var hasher = this._hasher; + + // Compute HMAC + var innerHash = hasher.finalize(messageUpdate); + hasher.reset(); + var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); + + return hmac; + } + }); +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA1 = C_algo.SHA1; + var HMAC = C_algo.HMAC; + + /** + * Password-Based Key Derivation Function 2 algorithm. + */ + var PBKDF2 = C_algo.PBKDF2 = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hasher to use. Default: SHA1 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128/32, + hasher: SHA1, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.PBKDF2.create(); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); + */ + init: function (cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function (password, salt) { + // Shortcut + var cfg = this.cfg; + + // Init HMAC + var hmac = HMAC.create(cfg.hasher, password); + + // Initial values + var derivedKey = WordArray.create(); + var blockIndex = WordArray.create([0x00000001]); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var blockIndexWords = blockIndex.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + var block = hmac.update(salt).finalize(blockIndex); + hmac.reset(); + + // Shortcuts + var blockWords = block.words; + var blockWordsLength = blockWords.length; + + // Iterations + var intermediate = block; + for (var i = 1; i < iterations; i++) { + intermediate = hmac.finalize(intermediate); + hmac.reset(); + + // Shortcut + var intermediateWords = intermediate.words; + + // XOR intermediate with block + for (var j = 0; j < blockWordsLength; j++) { + blockWords[j] ^= intermediateWords[j]; + } + } + + derivedKey.concat(block); + blockIndexWords[0]++; + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.PBKDF2(password, salt); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.PBKDF2 = function (password, salt, cfg) { + return PBKDF2.create(cfg).compute(password, salt); + }; +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var MD5 = C_algo.MD5; + + /** + * This key derivation function is meant to conform with EVP_BytesToKey. + * www.openssl.org/docs/crypto/EVP_BytesToKey.html + */ + var EvpKDF = C_algo.EvpKDF = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hash algorithm to use. Default: MD5 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128/32, + hasher: MD5, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.EvpKDF.create(); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); + */ + init: function (cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function (password, salt) { + // Shortcut + var cfg = this.cfg; + + // Init hasher + var hasher = cfg.hasher.create(); + + // Initial values + var derivedKey = WordArray.create(); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + if (block) { + hasher.update(block); + } + var block = hasher.update(password).finalize(salt); + hasher.reset(); + + // Iterations + for (var i = 1; i < iterations; i++) { + block = hasher.finalize(block); + hasher.reset(); + } + + derivedKey.concat(block); + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.EvpKDF(password, salt); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.EvpKDF = function (password, salt, cfg) { + return EvpKDF.create(cfg).compute(password, salt); + }; +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA256 = C_algo.SHA256; + + /** + * SHA-224 hash algorithm. + */ + var SHA224 = C_algo.SHA224 = SHA256.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, + 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 + ]); + }, + + _doFinalize: function () { + var hash = SHA256._doFinalize.call(this); + + hash.sigBytes -= 4; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA224('message'); + * var hash = CryptoJS.SHA224(wordArray); + */ + C.SHA224 = SHA256._createHelper(SHA224); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA224(message, key); + */ + C.HmacSHA224 = SHA256._createHmacHelper(SHA224); +}()); + + +(function (undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var X32WordArray = C_lib.WordArray; + + /** + * x64 namespace. + */ + var C_x64 = C.x64 = {}; + + /** + * A 64-bit word. + */ + var X64Word = C_x64.Word = Base.extend({ + /** + * Initializes a newly created 64-bit word. + * + * @param {number} high The high 32 bits. + * @param {number} low The low 32 bits. + * + * @example + * + * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); + */ + init: function (high, low) { + this.high = high; + this.low = low; + } + + /** + * Bitwise NOTs this word. + * + * @return {X64Word} A new x64-Word object after negating. + * + * @example + * + * var negated = x64Word.not(); + */ + // not: function () { + // var high = ~this.high; + // var low = ~this.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ANDs this word with the passed word. + * + * @param {X64Word} word The x64-Word to AND with this word. + * + * @return {X64Word} A new x64-Word object after ANDing. + * + * @example + * + * var anded = x64Word.and(anotherX64Word); + */ + // and: function (word) { + // var high = this.high & word.high; + // var low = this.low & word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to OR with this word. + * + * @return {X64Word} A new x64-Word object after ORing. + * + * @example + * + * var ored = x64Word.or(anotherX64Word); + */ + // or: function (word) { + // var high = this.high | word.high; + // var low = this.low | word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise XORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to XOR with this word. + * + * @return {X64Word} A new x64-Word object after XORing. + * + * @example + * + * var xored = x64Word.xor(anotherX64Word); + */ + // xor: function (word) { + // var high = this.high ^ word.high; + // var low = this.low ^ word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the left. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftL(25); + */ + // shiftL: function (n) { + // if (n < 32) { + // var high = (this.high << n) | (this.low >>> (32 - n)); + // var low = this.low << n; + // } else { + // var high = this.low << (n - 32); + // var low = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the right. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftR(7); + */ + // shiftR: function (n) { + // if (n < 32) { + // var low = (this.low >>> n) | (this.high << (32 - n)); + // var high = this.high >>> n; + // } else { + // var low = this.high >>> (n - 32); + // var high = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Rotates this word n bits to the left. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotL(25); + */ + // rotL: function (n) { + // return this.shiftL(n).or(this.shiftR(64 - n)); + // }, + + /** + * Rotates this word n bits to the right. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotR(7); + */ + // rotR: function (n) { + // return this.shiftR(n).or(this.shiftL(64 - n)); + // }, + + /** + * Adds this word with the passed word. + * + * @param {X64Word} word The x64-Word to add with this word. + * + * @return {X64Word} A new x64-Word object after adding. + * + * @example + * + * var added = x64Word.add(anotherX64Word); + */ + // add: function (word) { + // var low = (this.low + word.low) | 0; + // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0; + // var high = (this.high + word.high + carry) | 0; + + // return X64Word.create(high, low); + // } + }); + + /** + * An array of 64-bit words. + * + * @property {Array} words The array of CryptoJS.x64.Word objects. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var X64WordArray = C_x64.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.x64.WordArray.create(); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ]); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ], 10); + */ + init: function (words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 8; + } + }, + + /** + * Converts this 64-bit word array to a 32-bit word array. + * + * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. + * + * @example + * + * var x32WordArray = x64WordArray.toX32(); + */ + toX32: function () { + // Shortcuts + var x64Words = this.words; + var x64WordsLength = x64Words.length; + + // Convert + var x32Words = []; + for (var i = 0; i < x64WordsLength; i++) { + var x64Word = x64Words[i]; + x32Words.push(x64Word.high); + x32Words.push(x64Word.low); + } + + return X32WordArray.create(x32Words, this.sigBytes); + }, + + /** + * Creates a copy of this word array. + * + * @return {X64WordArray} The clone. + * + * @example + * + * var clone = x64WordArray.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + + // Clone "words" array + var words = clone.words = this.words.slice(0); + + // Clone each X64Word object + var wordsLength = words.length; + for (var i = 0; i < wordsLength; i++) { + words[i] = words[i].clone(); + } + + return clone; + } + }); +}()); + + +(function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var C_algo = C.algo; + + // Constants tables + var RHO_OFFSETS = []; + var PI_INDEXES = []; + var ROUND_CONSTANTS = []; + + // Compute Constants + (function () { + // Compute rho offset constants + var x = 1, y = 0; + for (var t = 0; t < 24; t++) { + RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64; + + var newX = y % 5; + var newY = (2 * x + 3 * y) % 5; + x = newX; + y = newY; + } + + // Compute pi index constants + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; + } + } + + // Compute round constants + var LFSR = 0x01; + for (var i = 0; i < 24; i++) { + var roundConstantMsw = 0; + var roundConstantLsw = 0; + + for (var j = 0; j < 7; j++) { + if (LFSR & 0x01) { + var bitPosition = (1 << j) - 1; + if (bitPosition < 32) { + roundConstantLsw ^= 1 << bitPosition; + } else /* if (bitPosition >= 32) */ { + roundConstantMsw ^= 1 << (bitPosition - 32); + } + } + + // Compute next LFSR + if (LFSR & 0x80) { + // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 + LFSR = (LFSR << 1) ^ 0x71; + } else { + LFSR <<= 1; + } + } + + ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); + } + }()); + + // Reusable objects for temporary values + var T = []; + (function () { + for (var i = 0; i < 25; i++) { + T[i] = X64Word.create(); + } + }()); + + /** + * SHA-3 hash algorithm. + */ + var SHA3 = C_algo.SHA3 = Hasher.extend({ + /** + * Configuration options. + * + * @property {number} outputLength + * The desired number of bits in the output hash. + * Only values permitted are: 224, 256, 384, 512. + * Default: 512 + */ + cfg: Hasher.cfg.extend({ + outputLength: 512 + }), + + _doReset: function () { + var state = this._state = [] + for (var i = 0; i < 25; i++) { + state[i] = new X64Word.init(); + } + + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + + _doProcessBlock: function (M, offset) { + // Shortcuts + var state = this._state; + var nBlockSizeLanes = this.blockSize / 2; + + // Absorb + for (var i = 0; i < nBlockSizeLanes; i++) { + // Shortcuts + var M2i = M[offset + 2 * i]; + var M2i1 = M[offset + 2 * i + 1]; + + // Swap endian + M2i = ( + (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | + (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00) + ); + M2i1 = ( + (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | + (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00) + ); + + // Absorb message into state + var lane = state[i]; + lane.high ^= M2i1; + lane.low ^= M2i; + } + + // Rounds + for (var round = 0; round < 24; round++) { + // Theta + for (var x = 0; x < 5; x++) { + // Mix column lanes + var tMsw = 0, tLsw = 0; + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + tMsw ^= lane.high; + tLsw ^= lane.low; + } + + // Temporary values + var Tx = T[x]; + Tx.high = tMsw; + Tx.low = tLsw; + } + for (var x = 0; x < 5; x++) { + // Shortcuts + var Tx4 = T[(x + 4) % 5]; + var Tx1 = T[(x + 1) % 5]; + var Tx1Msw = Tx1.high; + var Tx1Lsw = Tx1.low; + + // Mix surrounding columns + var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); + var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + lane.high ^= tMsw; + lane.low ^= tLsw; + } + } + + // Rho Pi + for (var laneIndex = 1; laneIndex < 25; laneIndex++) { + // Shortcuts + var lane = state[laneIndex]; + var laneMsw = lane.high; + var laneLsw = lane.low; + var rhoOffset = RHO_OFFSETS[laneIndex]; + + // Rotate lanes + if (rhoOffset < 32) { + var tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); + var tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); + } else /* if (rhoOffset >= 32) */ { + var tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); + var tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); + } + + // Transpose lanes + var TPiLane = T[PI_INDEXES[laneIndex]]; + TPiLane.high = tMsw; + TPiLane.low = tLsw; + } + + // Rho pi at x = y = 0 + var T0 = T[0]; + var state0 = state[0]; + T0.high = state0.high; + T0.low = state0.low; + + // Chi + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + // Shortcuts + var laneIndex = x + 5 * y; + var lane = state[laneIndex]; + var TLane = T[laneIndex]; + var Tx1Lane = T[((x + 1) % 5) + 5 * y]; + var Tx2Lane = T[((x + 2) % 5) + 5 * y]; + + // Mix rows + lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); + lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); + } + } + + // Iota + var lane = state[0]; + var roundConstant = ROUND_CONSTANTS[round]; + lane.high ^= roundConstant.high; + lane.low ^= roundConstant.low;; + } + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + var blockSizeBits = this.blockSize * 32; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32); + dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var state = this._state; + var outputLengthBytes = this.cfg.outputLength / 8; + var outputLengthLanes = outputLengthBytes / 8; + + // Squeeze + var hashWords = []; + for (var i = 0; i < outputLengthLanes; i++) { + // Shortcuts + var lane = state[i]; + var laneMsw = lane.high; + var laneLsw = lane.low; + + // Swap endian + laneMsw = ( + (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | + (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00) + ); + laneLsw = ( + (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | + (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00) + ); + + // Squeeze state to retrieve hash + hashWords.push(laneLsw); + hashWords.push(laneMsw); + } + + // Return final computed hash + return new WordArray.init(hashWords, outputLengthBytes); + }, + + clone: function () { + var clone = Hasher.clone.call(this); + + var state = clone._state = this._state.slice(0); + for (var i = 0; i < 25; i++) { + state[i] = state[i].clone(); + } + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA3('message'); + * var hash = CryptoJS.SHA3(wordArray); + */ + C.SHA3 = Hasher._createHelper(SHA3); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA3(message, key); + */ + C.HmacSHA3 = Hasher._createHmacHelper(SHA3); +}(Math)); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + + function X64Word_create() { + return X64Word.create.apply(X64Word, arguments); + } + + // Constants + var K = [ + X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), + X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), + X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), + X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), + X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), + X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), + X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), + X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), + X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), + X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), + X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), + X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), + X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), + X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), + X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), + X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), + X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), + X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), + X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), + X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), + X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), + X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), + X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), + X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), + X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), + X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), + X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), + X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), + X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), + X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), + X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), + X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), + X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), + X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), + X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), + X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), + X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), + X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), + X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), + X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817) + ]; + + // Reusable objects + var W = []; + (function () { + for (var i = 0; i < 80; i++) { + W[i] = X64Word_create(); + } + }()); + + /** + * SHA-512 hash algorithm. + */ + var SHA512 = C_algo.SHA512 = Hasher.extend({ + _doReset: function () { + this._hash = new X64WordArray.init([ + new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), + new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), + new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), + new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179) + ]); + }, + + _doProcessBlock: function (M, offset) { + // Shortcuts + var H = this._hash.words; + + var H0 = H[0]; + var H1 = H[1]; + var H2 = H[2]; + var H3 = H[3]; + var H4 = H[4]; + var H5 = H[5]; + var H6 = H[6]; + var H7 = H[7]; + + var H0h = H0.high; + var H0l = H0.low; + var H1h = H1.high; + var H1l = H1.low; + var H2h = H2.high; + var H2l = H2.low; + var H3h = H3.high; + var H3l = H3.low; + var H4h = H4.high; + var H4l = H4.low; + var H5h = H5.high; + var H5l = H5.low; + var H6h = H6.high; + var H6l = H6.low; + var H7h = H7.high; + var H7l = H7.low; + + // Working variables + var ah = H0h; + var al = H0l; + var bh = H1h; + var bl = H1l; + var ch = H2h; + var cl = H2l; + var dh = H3h; + var dl = H3l; + var eh = H4h; + var el = H4l; + var fh = H5h; + var fl = H5l; + var gh = H6h; + var gl = H6l; + var hh = H7h; + var hl = H7l; + + // Rounds + for (var i = 0; i < 80; i++) { + // Shortcut + var Wi = W[i]; + + // Extend message + if (i < 16) { + var Wih = Wi.high = M[offset + i * 2] | 0; + var Wil = Wi.low = M[offset + i * 2 + 1] | 0; + } else { + // Gamma0 + var gamma0x = W[i - 15]; + var gamma0xh = gamma0x.high; + var gamma0xl = gamma0x.low; + var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7); + var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25)); + + // Gamma1 + var gamma1x = W[i - 2]; + var gamma1xh = gamma1x.high; + var gamma1xl = gamma1x.low; + var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6); + var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26)); + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7 = W[i - 7]; + var Wi7h = Wi7.high; + var Wi7l = Wi7.low; + + var Wi16 = W[i - 16]; + var Wi16h = Wi16.high; + var Wi16l = Wi16.low; + + var Wil = gamma0l + Wi7l; + var Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0); + var Wil = Wil + gamma1l; + var Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0); + var Wil = Wil + Wi16l; + var Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0); + + Wi.high = Wih; + Wi.low = Wil; + } + + var chh = (eh & fh) ^ (~eh & gh); + var chl = (el & fl) ^ (~el & gl); + var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); + var majl = (al & bl) ^ (al & cl) ^ (bl & cl); + + var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); + var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); + var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); + var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); + + // t1 = h + sigma1 + ch + K[i] + W[i] + var Ki = K[i]; + var Kih = Ki.high; + var Kil = Ki.low; + + var t1l = hl + sigma1l; + var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); + var t1l = t1l + chl; + var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); + var t1l = t1l + Kil; + var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0); + var t1l = t1l + Wil; + var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0); + + // t2 = sigma0 + maj + var t2l = sigma0l + majl; + var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); + + // Update working variables + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = (dl + t1l) | 0; + eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = (t1l + t2l) | 0; + ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; + } + + // Intermediate hash value + H0l = H0.low = (H0l + al); + H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0)); + H1l = H1.low = (H1l + bl); + H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0)); + H2l = H2.low = (H2l + cl); + H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0)); + H3l = H3.low = (H3l + dl); + H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0)); + H4l = H4.low = (H4l + el); + H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0)); + H5l = H5.low = (H5l + fl); + H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0)); + H6l = H6.low = (H6l + gl); + H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0)); + H7l = H7.low = (H7l + hl); + H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0)); + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Convert hash to 32-bit word array before returning + var hash = this._hash.toX32(); + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + }, + + blockSize: 1024/32 + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA512('message'); + * var hash = CryptoJS.SHA512(wordArray); + */ + C.SHA512 = Hasher._createHelper(SHA512); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA512(message, key); + */ + C.HmacSHA512 = Hasher._createHmacHelper(SHA512); +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + var SHA512 = C_algo.SHA512; + + /** + * SHA-384 hash algorithm. + */ + var SHA384 = C_algo.SHA384 = SHA512.extend({ + _doReset: function () { + this._hash = new X64WordArray.init([ + new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), + new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), + new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), + new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4) + ]); + }, + + _doFinalize: function () { + var hash = SHA512._doFinalize.call(this); + + hash.sigBytes -= 16; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA384('message'); + * var hash = CryptoJS.SHA384(wordArray); + */ + C.SHA384 = SHA512._createHelper(SHA384); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA384(message, key); + */ + C.HmacSHA384 = SHA512._createHmacHelper(SHA384); +}()); + + +/** + * Cipher core components. + */ +CryptoJS.lib.Cipher || (function (undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var Base64 = C_enc.Base64; + var C_algo = C.algo; + var EvpKDF = C_algo.EvpKDF; + + /** + * Abstract base cipher template. + * + * @property {number} keySize This cipher's key size. Default: 4 (128 bits) + * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) + * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. + * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. + */ + var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + * + * @property {WordArray} iv The IV to use for this operation. + */ + cfg: Base.extend(), + + /** + * Creates this cipher in encryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); + */ + createEncryptor: function (key, cfg) { + return this.create(this._ENC_XFORM_MODE, key, cfg); + }, + + /** + * Creates this cipher in decryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); + */ + createDecryptor: function (key, cfg) { + return this.create(this._DEC_XFORM_MODE, key, cfg); + }, + + /** + * Initializes a newly created cipher. + * + * @param {number} xformMode Either the encryption or decryption transormation mode constant. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @example + * + * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); + */ + init: function (xformMode, key, cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Store transform mode and key + this._xformMode = xformMode; + this._key = key; + + // Set initial values + this.reset(); + }, + + /** + * Resets this cipher to its initial state. + * + * @example + * + * cipher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-cipher logic + this._doReset(); + }, + + /** + * Adds data to be encrypted or decrypted. + * + * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. + * + * @return {WordArray} The data after processing. + * + * @example + * + * var encrypted = cipher.process('data'); + * var encrypted = cipher.process(wordArray); + */ + process: function (dataUpdate) { + // Append + this._append(dataUpdate); + + // Process available blocks + return this._process(); + }, + + /** + * Finalizes the encryption or decryption process. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. + * + * @return {WordArray} The data after final processing. + * + * @example + * + * var encrypted = cipher.finalize(); + * var encrypted = cipher.finalize('data'); + * var encrypted = cipher.finalize(wordArray); + */ + finalize: function (dataUpdate) { + // Final data update + if (dataUpdate) { + this._append(dataUpdate); + } + + // Perform concrete-cipher logic + var finalProcessedData = this._doFinalize(); + + return finalProcessedData; + }, + + keySize: 128/32, + + ivSize: 128/32, + + _ENC_XFORM_MODE: 1, + + _DEC_XFORM_MODE: 2, + + /** + * Creates shortcut functions to a cipher's object interface. + * + * @param {Cipher} cipher The cipher to create a helper for. + * + * @return {Object} An object with encrypt and decrypt shortcut functions. + * + * @static + * + * @example + * + * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); + */ + _createHelper: (function () { + function selectCipherStrategy(key) { + if (typeof key == 'string') { + return PasswordBasedCipher; + } else { + return SerializableCipher; + } + } + + return function (cipher) { + return { + encrypt: function (message, key, cfg) { + return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); + }, + + decrypt: function (ciphertext, key, cfg) { + return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); + } + }; + }; + }()) + }); + + /** + * Abstract base stream cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) + */ + var StreamCipher = C_lib.StreamCipher = Cipher.extend({ + _doFinalize: function () { + // Process partial blocks + var finalProcessedBlocks = this._process(!!'flush'); + + return finalProcessedBlocks; + }, + + blockSize: 1 + }); + + /** + * Mode namespace. + */ + var C_mode = C.mode = {}; + + /** + * Abstract base block cipher mode template. + */ + var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ + /** + * Creates this mode for encryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); + */ + createEncryptor: function (cipher, iv) { + return this.Encryptor.create(cipher, iv); + }, + + /** + * Creates this mode for decryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); + */ + createDecryptor: function (cipher, iv) { + return this.Decryptor.create(cipher, iv); + }, + + /** + * Initializes a newly created mode. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @example + * + * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); + */ + init: function (cipher, iv) { + this._cipher = cipher; + this._iv = iv; + } + }); + + /** + * Cipher Block Chaining mode. + */ + var CBC = C_mode.CBC = (function () { + /** + * Abstract base CBC mode. + */ + var CBC = BlockCipherMode.extend(); + + /** + * CBC encryptor. + */ + CBC.Encryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // XOR and encrypt + xorBlock.call(this, words, offset, blockSize); + cipher.encryptBlock(words, offset); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + /** + * CBC decryptor. + */ + CBC.Decryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + // Decrypt and XOR + cipher.decryptBlock(words, offset); + xorBlock.call(this, words, offset, blockSize); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function xorBlock(words, offset, blockSize) { + // Shortcut + var iv = this._iv; + + // Choose mixing block + if (iv) { + var block = iv; + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + var block = this._prevBlock; + } + + // XOR blocks + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= block[i]; + } + } + + return CBC; + }()); + + /** + * Padding namespace. + */ + var C_pad = C.pad = {}; + + /** + * PKCS #5/7 padding strategy. + */ + var Pkcs7 = C_pad.Pkcs7 = { + /** + * Pads data using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to pad. + * @param {number} blockSize The multiple that the data should be padded to. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.pad(wordArray, 4); + */ + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Create padding word + var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; + + // Create padding + var paddingWords = []; + for (var i = 0; i < nPaddingBytes; i += 4) { + paddingWords.push(paddingWord); + } + var padding = WordArray.create(paddingWords, nPaddingBytes); + + // Add padding + data.concat(padding); + }, + + /** + * Unpads data that had been padded using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to unpad. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.unpad(wordArray); + */ + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + /** + * Abstract base block cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) + */ + var BlockCipher = C_lib.BlockCipher = Cipher.extend({ + /** + * Configuration options. + * + * @property {Mode} mode The block mode to use. Default: CBC + * @property {Padding} padding The padding strategy to use. Default: Pkcs7 + */ + cfg: Cipher.cfg.extend({ + mode: CBC, + padding: Pkcs7 + }), + + reset: function () { + // Reset cipher + Cipher.reset.call(this); + + // Shortcuts + var cfg = this.cfg; + var iv = cfg.iv; + var mode = cfg.mode; + + // Reset block mode + if (this._xformMode == this._ENC_XFORM_MODE) { + var modeCreator = mode.createEncryptor; + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + var modeCreator = mode.createDecryptor; + // Keep at least one block in the buffer for unpadding + this._minBufferSize = 1; + } + + if (this._mode && this._mode.__creator == modeCreator) { + this._mode.init(this, iv && iv.words); + } else { + this._mode = modeCreator.call(mode, this, iv && iv.words); + this._mode.__creator = modeCreator; + } + }, + + _doProcessBlock: function (words, offset) { + this._mode.processBlock(words, offset); + }, + + _doFinalize: function () { + // Shortcut + var padding = this.cfg.padding; + + // Finalize + if (this._xformMode == this._ENC_XFORM_MODE) { + // Pad data + padding.pad(this._data, this.blockSize); + + // Process final blocks + var finalProcessedBlocks = this._process(!!'flush'); + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + // Process final blocks + var finalProcessedBlocks = this._process(!!'flush'); + + // Unpad data + padding.unpad(finalProcessedBlocks); + } + + return finalProcessedBlocks; + }, + + blockSize: 128/32 + }); + + /** + * A collection of cipher parameters. + * + * @property {WordArray} ciphertext The raw ciphertext. + * @property {WordArray} key The key to this ciphertext. + * @property {WordArray} iv The IV used in the ciphering operation. + * @property {WordArray} salt The salt used with a key derivation function. + * @property {Cipher} algorithm The cipher algorithm. + * @property {Mode} mode The block mode used in the ciphering operation. + * @property {Padding} padding The padding scheme used in the ciphering operation. + * @property {number} blockSize The block size of the cipher. + * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. + */ + var CipherParams = C_lib.CipherParams = Base.extend({ + /** + * Initializes a newly created cipher params object. + * + * @param {Object} cipherParams An object with any of the possible cipher parameters. + * + * @example + * + * var cipherParams = CryptoJS.lib.CipherParams.create({ + * ciphertext: ciphertextWordArray, + * key: keyWordArray, + * iv: ivWordArray, + * salt: saltWordArray, + * algorithm: CryptoJS.algo.AES, + * mode: CryptoJS.mode.CBC, + * padding: CryptoJS.pad.PKCS7, + * blockSize: 4, + * formatter: CryptoJS.format.OpenSSL + * }); + */ + init: function (cipherParams) { + this.mixIn(cipherParams); + }, + + /** + * Converts this cipher params object to a string. + * + * @param {Format} formatter (Optional) The formatting strategy to use. + * + * @return {string} The stringified cipher params. + * + * @throws Error If neither the formatter nor the default formatter is set. + * + * @example + * + * var string = cipherParams + ''; + * var string = cipherParams.toString(); + * var string = cipherParams.toString(CryptoJS.format.OpenSSL); + */ + toString: function (formatter) { + return (formatter || this.formatter).stringify(this); + } + }); + + /** + * Format namespace. + */ + var C_format = C.format = {}; + + /** + * OpenSSL formatting strategy. + */ + var OpenSSLFormatter = C_format.OpenSSL = { + /** + * Converts a cipher params object to an OpenSSL-compatible string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The OpenSSL-compatible string. + * + * @static + * + * @example + * + * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); + */ + stringify: function (cipherParams) { + // Shortcuts + var ciphertext = cipherParams.ciphertext; + var salt = cipherParams.salt; + + // Format + if (salt) { + var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); + } else { + var wordArray = ciphertext; + } + + return wordArray.toString(Base64); + }, + + /** + * Converts an OpenSSL-compatible string to a cipher params object. + * + * @param {string} openSSLStr The OpenSSL-compatible string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); + */ + parse: function (openSSLStr) { + // Parse base64 + var ciphertext = Base64.parse(openSSLStr); + + // Shortcut + var ciphertextWords = ciphertext.words; + + // Test for salt + if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { + // Extract salt + var salt = WordArray.create(ciphertextWords.slice(2, 4)); + + // Remove salt from ciphertext + ciphertextWords.splice(0, 4); + ciphertext.sigBytes -= 16; + } + + return CipherParams.create({ ciphertext: ciphertext, salt: salt }); + } + }; + + /** + * A cipher wrapper that returns ciphertext as a serializable cipher params object. + */ + var SerializableCipher = C_lib.SerializableCipher = Base.extend({ + /** + * Configuration options. + * + * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL + */ + cfg: Base.extend({ + format: OpenSSLFormatter + }), + + /** + * Encrypts a message. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Encrypt + var encryptor = cipher.createEncryptor(key, cfg); + var ciphertext = encryptor.finalize(message); + + // Shortcut + var cipherCfg = encryptor.cfg; + + // Create and return serializable cipher params + return CipherParams.create({ + ciphertext: ciphertext, + key: key, + iv: cipherCfg.iv, + algorithm: cipher, + mode: cipherCfg.mode, + padding: cipherCfg.padding, + blockSize: cipher.blockSize, + formatter: cfg.format + }); + }, + + /** + * Decrypts serialized ciphertext. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Decrypt + var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); + + return plaintext; + }, + + /** + * Converts serialized ciphertext to CipherParams, + * else assumed CipherParams already and returns ciphertext unchanged. + * + * @param {CipherParams|string} ciphertext The ciphertext. + * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. + * + * @return {CipherParams} The unserialized ciphertext. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); + */ + _parse: function (ciphertext, format) { + if (typeof ciphertext == 'string') { + return format.parse(ciphertext, this); + } else { + return ciphertext; + } + } + }); + + /** + * Key derivation function namespace. + */ + var C_kdf = C.kdf = {}; + + /** + * OpenSSL key derivation function. + */ + var OpenSSLKdf = C_kdf.OpenSSL = { + /** + * Derives a key and IV from a password. + * + * @param {string} password The password to derive from. + * @param {number} keySize The size in words of the key to generate. + * @param {number} ivSize The size in words of the IV to generate. + * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. + * + * @return {CipherParams} A cipher params object with the key, IV, and salt. + * + * @static + * + * @example + * + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); + */ + execute: function (password, keySize, ivSize, salt) { + // Generate random salt + if (!salt) { + salt = WordArray.random(64/8); + } + + // Derive key and IV + var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt); + + // Separate key and IV + var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); + key.sigBytes = keySize * 4; + + // Return params + return CipherParams.create({ key: key, iv: iv, salt: salt }); + } + }; + + /** + * A serializable cipher wrapper that derives the key from a password, + * and returns ciphertext as a serializable cipher params object. + */ + var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ + /** + * Configuration options. + * + * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL + */ + cfg: SerializableCipher.cfg.extend({ + kdf: OpenSSLKdf + }), + + /** + * Encrypts a message using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Encrypt + var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); + + // Mix in derived params + ciphertext.mixIn(derivedParams); + + return ciphertext; + }, + + /** + * Decrypts serialized ciphertext using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Decrypt + var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); + + return plaintext; + } + }); +}()); + + +/** + * Cipher Feedback block mode. + */ +CryptoJS.mode.CFB = (function () { + var CFB = CryptoJS.lib.BlockCipherMode.extend(); + + CFB.Encryptor = CFB.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + CFB.Decryptor = CFB.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { + // Shortcut + var iv = this._iv; + + // Generate keystream + if (iv) { + var keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + var keystream = this._prevBlock; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + + return CFB; +}()); + + +/** + * Electronic Codebook block mode. + */ +CryptoJS.mode.ECB = (function () { + var ECB = CryptoJS.lib.BlockCipherMode.extend(); + + ECB.Encryptor = ECB.extend({ + processBlock: function (words, offset) { + this._cipher.encryptBlock(words, offset); + } + }); + + ECB.Decryptor = ECB.extend({ + processBlock: function (words, offset) { + this._cipher.decryptBlock(words, offset); + } + }); + + return ECB; +}()); + + +/** + * ANSI X.923 padding strategy. + */ +CryptoJS.pad.AnsiX923 = { + pad: function (data, blockSize) { + // Shortcuts + var dataSigBytes = data.sigBytes; + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; + + // Compute last byte position + var lastBytePos = dataSigBytes + nPaddingBytes - 1; + + // Pad + data.clamp(); + data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); + data.sigBytes += nPaddingBytes; + }, + + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } +}; + + +/** + * ISO 10126 padding strategy. + */ +CryptoJS.pad.Iso10126 = { + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Pad + data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)). + concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); + }, + + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } +}; + + +/** + * ISO/IEC 9797-1 Padding Method 2. + */ +CryptoJS.pad.Iso97971 = { + pad: function (data, blockSize) { + // Add 0x80 byte + data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); + + // Zero pad the rest + CryptoJS.pad.ZeroPadding.pad(data, blockSize); + }, + + unpad: function (data) { + // Remove zero padding + CryptoJS.pad.ZeroPadding.unpad(data); + + // Remove one more byte -- the 0x80 byte + data.sigBytes--; + } +}; + + +/** + * Output Feedback block mode. + */ +CryptoJS.mode.OFB = (function () { + var OFB = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = OFB.Encryptor = OFB.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var keystream = this._keystream; + + // Generate keystream + if (iv) { + keystream = this._keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + OFB.Decryptor = Encryptor; + + return OFB; +}()); + + +/** + * A noop padding strategy. + */ +CryptoJS.pad.NoPadding = { + pad: function () { + }, + + unpad: function () { + } +}; + + +(function (undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var CipherParams = C_lib.CipherParams; + var C_enc = C.enc; + var Hex = C_enc.Hex; + var C_format = C.format; + + var HexFormatter = C_format.Hex = { + /** + * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The hexadecimally encoded string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.format.Hex.stringify(cipherParams); + */ + stringify: function (cipherParams) { + return cipherParams.ciphertext.toString(Hex); + }, + + /** + * Converts a hexadecimally encoded ciphertext string to a cipher params object. + * + * @param {string} input The hexadecimally encoded string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.Hex.parse(hexString); + */ + parse: function (input) { + var ciphertext = Hex.parse(input); + return CipherParams.create({ ciphertext: ciphertext }); + } + }; +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Lookup tables + var SBOX = []; + var INV_SBOX = []; + var SUB_MIX_0 = []; + var SUB_MIX_1 = []; + var SUB_MIX_2 = []; + var SUB_MIX_3 = []; + var INV_SUB_MIX_0 = []; + var INV_SUB_MIX_1 = []; + var INV_SUB_MIX_2 = []; + var INV_SUB_MIX_3 = []; + + // Compute lookup tables + (function () { + // Compute double table + var d = []; + for (var i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = (i << 1) ^ 0x11b; + } + } + + // Walk GF(2^8) + var x = 0; + var xi = 0; + for (var i = 0; i < 256; i++) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; + SBOX[x] = sx; + INV_SBOX[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100); + SUB_MIX_0[x] = (t << 24) | (t >>> 8); + SUB_MIX_1[x] = (t << 16) | (t >>> 16); + SUB_MIX_2[x] = (t << 8) | (t >>> 24); + SUB_MIX_3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); + INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); + INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); + INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); + INV_SUB_MIX_3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + }()); + + // Precomputed Rcon lookup + var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + + /** + * AES block cipher algorithm. + */ + var AES = C_algo.AES = BlockCipher.extend({ + _doReset: function () { + // Skip reset of nRounds has been set before and key did not change + if (this._nRounds && this._keyPriorReset === this._key) { + return; + } + + // Shortcuts + var key = this._keyPriorReset = this._key; + var keyWords = key.words; + var keySize = key.sigBytes / 4; + + // Compute number of rounds + var nRounds = this._nRounds = keySize + 6; + + // Compute number of key schedule rows + var ksRows = (nRounds + 1) * 4; + + // Compute key schedule + var keySchedule = this._keySchedule = []; + for (var ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + keySchedule[ksRow] = keyWords[ksRow]; + } else { + var t = keySchedule[ksRow - 1]; + + if (!(ksRow % keySize)) { + // Rot word + t = (t << 8) | (t >>> 24); + + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + + // Mix Rcon + t ^= RCON[(ksRow / keySize) | 0] << 24; + } else if (keySize > 6 && ksRow % keySize == 4) { + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + } + + keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; + } + } + + // Compute inv key schedule + var invKeySchedule = this._invKeySchedule = []; + for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { + var ksRow = ksRows - invKsRow; + + if (invKsRow % 4) { + var t = keySchedule[ksRow]; + } else { + var t = keySchedule[ksRow - 4]; + } + + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ + INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; + } + } + }, + + encryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); + }, + + decryptBlock: function (M, offset) { + // Swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + + this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); + + // Inv swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + }, + + _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { + // Shortcut + var nRounds = this._nRounds; + + // Get input, add round key + var s0 = M[offset] ^ keySchedule[0]; + var s1 = M[offset + 1] ^ keySchedule[1]; + var s2 = M[offset + 2] ^ keySchedule[2]; + var s3 = M[offset + 3] ^ keySchedule[3]; + + // Key schedule row counter + var ksRow = 4; + + // Rounds + for (var round = 1; round < nRounds; round++) { + // Shift rows, sub bytes, mix columns, add round key + var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; + var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; + var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; + var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; + + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + } + + // Shift rows, sub bytes, add round key + var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; + var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; + var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; + var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; + + // Set output + M[offset] = t0; + M[offset + 1] = t1; + M[offset + 2] = t2; + M[offset + 3] = t3; + }, + + keySize: 256/32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); + */ + C.AES = BlockCipher._createHelper(AES); +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Permuted Choice 1 constants + var PC1 = [ + 57, 49, 41, 33, 25, 17, 9, 1, + 58, 50, 42, 34, 26, 18, 10, 2, + 59, 51, 43, 35, 27, 19, 11, 3, + 60, 52, 44, 36, 63, 55, 47, 39, + 31, 23, 15, 7, 62, 54, 46, 38, + 30, 22, 14, 6, 61, 53, 45, 37, + 29, 21, 13, 5, 28, 20, 12, 4 + ]; + + // Permuted Choice 2 constants + var PC2 = [ + 14, 17, 11, 24, 1, 5, + 3, 28, 15, 6, 21, 10, + 23, 19, 12, 4, 26, 8, + 16, 7, 27, 20, 13, 2, + 41, 52, 31, 37, 47, 55, + 30, 40, 51, 45, 33, 48, + 44, 49, 39, 56, 34, 53, + 46, 42, 50, 36, 29, 32 + ]; + + // Cumulative bit shift constants + var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; + + // SBOXes and round permutation constants + var SBOX_P = [ + { + 0x0: 0x808200, + 0x10000000: 0x8000, + 0x20000000: 0x808002, + 0x30000000: 0x2, + 0x40000000: 0x200, + 0x50000000: 0x808202, + 0x60000000: 0x800202, + 0x70000000: 0x800000, + 0x80000000: 0x202, + 0x90000000: 0x800200, + 0xa0000000: 0x8200, + 0xb0000000: 0x808000, + 0xc0000000: 0x8002, + 0xd0000000: 0x800002, + 0xe0000000: 0x0, + 0xf0000000: 0x8202, + 0x8000000: 0x0, + 0x18000000: 0x808202, + 0x28000000: 0x8202, + 0x38000000: 0x8000, + 0x48000000: 0x808200, + 0x58000000: 0x200, + 0x68000000: 0x808002, + 0x78000000: 0x2, + 0x88000000: 0x800200, + 0x98000000: 0x8200, + 0xa8000000: 0x808000, + 0xb8000000: 0x800202, + 0xc8000000: 0x800002, + 0xd8000000: 0x8002, + 0xe8000000: 0x202, + 0xf8000000: 0x800000, + 0x1: 0x8000, + 0x10000001: 0x2, + 0x20000001: 0x808200, + 0x30000001: 0x800000, + 0x40000001: 0x808002, + 0x50000001: 0x8200, + 0x60000001: 0x200, + 0x70000001: 0x800202, + 0x80000001: 0x808202, + 0x90000001: 0x808000, + 0xa0000001: 0x800002, + 0xb0000001: 0x8202, + 0xc0000001: 0x202, + 0xd0000001: 0x800200, + 0xe0000001: 0x8002, + 0xf0000001: 0x0, + 0x8000001: 0x808202, + 0x18000001: 0x808000, + 0x28000001: 0x800000, + 0x38000001: 0x200, + 0x48000001: 0x8000, + 0x58000001: 0x800002, + 0x68000001: 0x2, + 0x78000001: 0x8202, + 0x88000001: 0x8002, + 0x98000001: 0x800202, + 0xa8000001: 0x202, + 0xb8000001: 0x808200, + 0xc8000001: 0x800200, + 0xd8000001: 0x0, + 0xe8000001: 0x8200, + 0xf8000001: 0x808002 + }, + { + 0x0: 0x40084010, + 0x1000000: 0x4000, + 0x2000000: 0x80000, + 0x3000000: 0x40080010, + 0x4000000: 0x40000010, + 0x5000000: 0x40084000, + 0x6000000: 0x40004000, + 0x7000000: 0x10, + 0x8000000: 0x84000, + 0x9000000: 0x40004010, + 0xa000000: 0x40000000, + 0xb000000: 0x84010, + 0xc000000: 0x80010, + 0xd000000: 0x0, + 0xe000000: 0x4010, + 0xf000000: 0x40080000, + 0x800000: 0x40004000, + 0x1800000: 0x84010, + 0x2800000: 0x10, + 0x3800000: 0x40004010, + 0x4800000: 0x40084010, + 0x5800000: 0x40000000, + 0x6800000: 0x80000, + 0x7800000: 0x40080010, + 0x8800000: 0x80010, + 0x9800000: 0x0, + 0xa800000: 0x4000, + 0xb800000: 0x40080000, + 0xc800000: 0x40000010, + 0xd800000: 0x84000, + 0xe800000: 0x40084000, + 0xf800000: 0x4010, + 0x10000000: 0x0, + 0x11000000: 0x40080010, + 0x12000000: 0x40004010, + 0x13000000: 0x40084000, + 0x14000000: 0x40080000, + 0x15000000: 0x10, + 0x16000000: 0x84010, + 0x17000000: 0x4000, + 0x18000000: 0x4010, + 0x19000000: 0x80000, + 0x1a000000: 0x80010, + 0x1b000000: 0x40000010, + 0x1c000000: 0x84000, + 0x1d000000: 0x40004000, + 0x1e000000: 0x40000000, + 0x1f000000: 0x40084010, + 0x10800000: 0x84010, + 0x11800000: 0x80000, + 0x12800000: 0x40080000, + 0x13800000: 0x4000, + 0x14800000: 0x40004000, + 0x15800000: 0x40084010, + 0x16800000: 0x10, + 0x17800000: 0x40000000, + 0x18800000: 0x40084000, + 0x19800000: 0x40000010, + 0x1a800000: 0x40004010, + 0x1b800000: 0x80010, + 0x1c800000: 0x0, + 0x1d800000: 0x4010, + 0x1e800000: 0x40080010, + 0x1f800000: 0x84000 + }, + { + 0x0: 0x104, + 0x100000: 0x0, + 0x200000: 0x4000100, + 0x300000: 0x10104, + 0x400000: 0x10004, + 0x500000: 0x4000004, + 0x600000: 0x4010104, + 0x700000: 0x4010000, + 0x800000: 0x4000000, + 0x900000: 0x4010100, + 0xa00000: 0x10100, + 0xb00000: 0x4010004, + 0xc00000: 0x4000104, + 0xd00000: 0x10000, + 0xe00000: 0x4, + 0xf00000: 0x100, + 0x80000: 0x4010100, + 0x180000: 0x4010004, + 0x280000: 0x0, + 0x380000: 0x4000100, + 0x480000: 0x4000004, + 0x580000: 0x10000, + 0x680000: 0x10004, + 0x780000: 0x104, + 0x880000: 0x4, + 0x980000: 0x100, + 0xa80000: 0x4010000, + 0xb80000: 0x10104, + 0xc80000: 0x10100, + 0xd80000: 0x4000104, + 0xe80000: 0x4010104, + 0xf80000: 0x4000000, + 0x1000000: 0x4010100, + 0x1100000: 0x10004, + 0x1200000: 0x10000, + 0x1300000: 0x4000100, + 0x1400000: 0x100, + 0x1500000: 0x4010104, + 0x1600000: 0x4000004, + 0x1700000: 0x0, + 0x1800000: 0x4000104, + 0x1900000: 0x4000000, + 0x1a00000: 0x4, + 0x1b00000: 0x10100, + 0x1c00000: 0x4010000, + 0x1d00000: 0x104, + 0x1e00000: 0x10104, + 0x1f00000: 0x4010004, + 0x1080000: 0x4000000, + 0x1180000: 0x104, + 0x1280000: 0x4010100, + 0x1380000: 0x0, + 0x1480000: 0x10004, + 0x1580000: 0x4000100, + 0x1680000: 0x100, + 0x1780000: 0x4010004, + 0x1880000: 0x10000, + 0x1980000: 0x4010104, + 0x1a80000: 0x10104, + 0x1b80000: 0x4000004, + 0x1c80000: 0x4000104, + 0x1d80000: 0x4010000, + 0x1e80000: 0x4, + 0x1f80000: 0x10100 + }, + { + 0x0: 0x80401000, + 0x10000: 0x80001040, + 0x20000: 0x401040, + 0x30000: 0x80400000, + 0x40000: 0x0, + 0x50000: 0x401000, + 0x60000: 0x80000040, + 0x70000: 0x400040, + 0x80000: 0x80000000, + 0x90000: 0x400000, + 0xa0000: 0x40, + 0xb0000: 0x80001000, + 0xc0000: 0x80400040, + 0xd0000: 0x1040, + 0xe0000: 0x1000, + 0xf0000: 0x80401040, + 0x8000: 0x80001040, + 0x18000: 0x40, + 0x28000: 0x80400040, + 0x38000: 0x80001000, + 0x48000: 0x401000, + 0x58000: 0x80401040, + 0x68000: 0x0, + 0x78000: 0x80400000, + 0x88000: 0x1000, + 0x98000: 0x80401000, + 0xa8000: 0x400000, + 0xb8000: 0x1040, + 0xc8000: 0x80000000, + 0xd8000: 0x400040, + 0xe8000: 0x401040, + 0xf8000: 0x80000040, + 0x100000: 0x400040, + 0x110000: 0x401000, + 0x120000: 0x80000040, + 0x130000: 0x0, + 0x140000: 0x1040, + 0x150000: 0x80400040, + 0x160000: 0x80401000, + 0x170000: 0x80001040, + 0x180000: 0x80401040, + 0x190000: 0x80000000, + 0x1a0000: 0x80400000, + 0x1b0000: 0x401040, + 0x1c0000: 0x80001000, + 0x1d0000: 0x400000, + 0x1e0000: 0x40, + 0x1f0000: 0x1000, + 0x108000: 0x80400000, + 0x118000: 0x80401040, + 0x128000: 0x0, + 0x138000: 0x401000, + 0x148000: 0x400040, + 0x158000: 0x80000000, + 0x168000: 0x80001040, + 0x178000: 0x40, + 0x188000: 0x80000040, + 0x198000: 0x1000, + 0x1a8000: 0x80001000, + 0x1b8000: 0x80400040, + 0x1c8000: 0x1040, + 0x1d8000: 0x80401000, + 0x1e8000: 0x400000, + 0x1f8000: 0x401040 + }, + { + 0x0: 0x80, + 0x1000: 0x1040000, + 0x2000: 0x40000, + 0x3000: 0x20000000, + 0x4000: 0x20040080, + 0x5000: 0x1000080, + 0x6000: 0x21000080, + 0x7000: 0x40080, + 0x8000: 0x1000000, + 0x9000: 0x20040000, + 0xa000: 0x20000080, + 0xb000: 0x21040080, + 0xc000: 0x21040000, + 0xd000: 0x0, + 0xe000: 0x1040080, + 0xf000: 0x21000000, + 0x800: 0x1040080, + 0x1800: 0x21000080, + 0x2800: 0x80, + 0x3800: 0x1040000, + 0x4800: 0x40000, + 0x5800: 0x20040080, + 0x6800: 0x21040000, + 0x7800: 0x20000000, + 0x8800: 0x20040000, + 0x9800: 0x0, + 0xa800: 0x21040080, + 0xb800: 0x1000080, + 0xc800: 0x20000080, + 0xd800: 0x21000000, + 0xe800: 0x1000000, + 0xf800: 0x40080, + 0x10000: 0x40000, + 0x11000: 0x80, + 0x12000: 0x20000000, + 0x13000: 0x21000080, + 0x14000: 0x1000080, + 0x15000: 0x21040000, + 0x16000: 0x20040080, + 0x17000: 0x1000000, + 0x18000: 0x21040080, + 0x19000: 0x21000000, + 0x1a000: 0x1040000, + 0x1b000: 0x20040000, + 0x1c000: 0x40080, + 0x1d000: 0x20000080, + 0x1e000: 0x0, + 0x1f000: 0x1040080, + 0x10800: 0x21000080, + 0x11800: 0x1000000, + 0x12800: 0x1040000, + 0x13800: 0x20040080, + 0x14800: 0x20000000, + 0x15800: 0x1040080, + 0x16800: 0x80, + 0x17800: 0x21040000, + 0x18800: 0x40080, + 0x19800: 0x21040080, + 0x1a800: 0x0, + 0x1b800: 0x21000000, + 0x1c800: 0x1000080, + 0x1d800: 0x40000, + 0x1e800: 0x20040000, + 0x1f800: 0x20000080 + }, + { + 0x0: 0x10000008, + 0x100: 0x2000, + 0x200: 0x10200000, + 0x300: 0x10202008, + 0x400: 0x10002000, + 0x500: 0x200000, + 0x600: 0x200008, + 0x700: 0x10000000, + 0x800: 0x0, + 0x900: 0x10002008, + 0xa00: 0x202000, + 0xb00: 0x8, + 0xc00: 0x10200008, + 0xd00: 0x202008, + 0xe00: 0x2008, + 0xf00: 0x10202000, + 0x80: 0x10200000, + 0x180: 0x10202008, + 0x280: 0x8, + 0x380: 0x200000, + 0x480: 0x202008, + 0x580: 0x10000008, + 0x680: 0x10002000, + 0x780: 0x2008, + 0x880: 0x200008, + 0x980: 0x2000, + 0xa80: 0x10002008, + 0xb80: 0x10200008, + 0xc80: 0x0, + 0xd80: 0x10202000, + 0xe80: 0x202000, + 0xf80: 0x10000000, + 0x1000: 0x10002000, + 0x1100: 0x10200008, + 0x1200: 0x10202008, + 0x1300: 0x2008, + 0x1400: 0x200000, + 0x1500: 0x10000000, + 0x1600: 0x10000008, + 0x1700: 0x202000, + 0x1800: 0x202008, + 0x1900: 0x0, + 0x1a00: 0x8, + 0x1b00: 0x10200000, + 0x1c00: 0x2000, + 0x1d00: 0x10002008, + 0x1e00: 0x10202000, + 0x1f00: 0x200008, + 0x1080: 0x8, + 0x1180: 0x202000, + 0x1280: 0x200000, + 0x1380: 0x10000008, + 0x1480: 0x10002000, + 0x1580: 0x2008, + 0x1680: 0x10202008, + 0x1780: 0x10200000, + 0x1880: 0x10202000, + 0x1980: 0x10200008, + 0x1a80: 0x2000, + 0x1b80: 0x202008, + 0x1c80: 0x200008, + 0x1d80: 0x0, + 0x1e80: 0x10000000, + 0x1f80: 0x10002008 + }, + { + 0x0: 0x100000, + 0x10: 0x2000401, + 0x20: 0x400, + 0x30: 0x100401, + 0x40: 0x2100401, + 0x50: 0x0, + 0x60: 0x1, + 0x70: 0x2100001, + 0x80: 0x2000400, + 0x90: 0x100001, + 0xa0: 0x2000001, + 0xb0: 0x2100400, + 0xc0: 0x2100000, + 0xd0: 0x401, + 0xe0: 0x100400, + 0xf0: 0x2000000, + 0x8: 0x2100001, + 0x18: 0x0, + 0x28: 0x2000401, + 0x38: 0x2100400, + 0x48: 0x100000, + 0x58: 0x2000001, + 0x68: 0x2000000, + 0x78: 0x401, + 0x88: 0x100401, + 0x98: 0x2000400, + 0xa8: 0x2100000, + 0xb8: 0x100001, + 0xc8: 0x400, + 0xd8: 0x2100401, + 0xe8: 0x1, + 0xf8: 0x100400, + 0x100: 0x2000000, + 0x110: 0x100000, + 0x120: 0x2000401, + 0x130: 0x2100001, + 0x140: 0x100001, + 0x150: 0x2000400, + 0x160: 0x2100400, + 0x170: 0x100401, + 0x180: 0x401, + 0x190: 0x2100401, + 0x1a0: 0x100400, + 0x1b0: 0x1, + 0x1c0: 0x0, + 0x1d0: 0x2100000, + 0x1e0: 0x2000001, + 0x1f0: 0x400, + 0x108: 0x100400, + 0x118: 0x2000401, + 0x128: 0x2100001, + 0x138: 0x1, + 0x148: 0x2000000, + 0x158: 0x100000, + 0x168: 0x401, + 0x178: 0x2100400, + 0x188: 0x2000001, + 0x198: 0x2100000, + 0x1a8: 0x0, + 0x1b8: 0x2100401, + 0x1c8: 0x100401, + 0x1d8: 0x400, + 0x1e8: 0x2000400, + 0x1f8: 0x100001 + }, + { + 0x0: 0x8000820, + 0x1: 0x20000, + 0x2: 0x8000000, + 0x3: 0x20, + 0x4: 0x20020, + 0x5: 0x8020820, + 0x6: 0x8020800, + 0x7: 0x800, + 0x8: 0x8020000, + 0x9: 0x8000800, + 0xa: 0x20800, + 0xb: 0x8020020, + 0xc: 0x820, + 0xd: 0x0, + 0xe: 0x8000020, + 0xf: 0x20820, + 0x80000000: 0x800, + 0x80000001: 0x8020820, + 0x80000002: 0x8000820, + 0x80000003: 0x8000000, + 0x80000004: 0x8020000, + 0x80000005: 0x20800, + 0x80000006: 0x20820, + 0x80000007: 0x20, + 0x80000008: 0x8000020, + 0x80000009: 0x820, + 0x8000000a: 0x20020, + 0x8000000b: 0x8020800, + 0x8000000c: 0x0, + 0x8000000d: 0x8020020, + 0x8000000e: 0x8000800, + 0x8000000f: 0x20000, + 0x10: 0x20820, + 0x11: 0x8020800, + 0x12: 0x20, + 0x13: 0x800, + 0x14: 0x8000800, + 0x15: 0x8000020, + 0x16: 0x8020020, + 0x17: 0x20000, + 0x18: 0x0, + 0x19: 0x20020, + 0x1a: 0x8020000, + 0x1b: 0x8000820, + 0x1c: 0x8020820, + 0x1d: 0x20800, + 0x1e: 0x820, + 0x1f: 0x8000000, + 0x80000010: 0x20000, + 0x80000011: 0x800, + 0x80000012: 0x8020020, + 0x80000013: 0x20820, + 0x80000014: 0x20, + 0x80000015: 0x8020000, + 0x80000016: 0x8000000, + 0x80000017: 0x8000820, + 0x80000018: 0x8020820, + 0x80000019: 0x8000020, + 0x8000001a: 0x8000800, + 0x8000001b: 0x0, + 0x8000001c: 0x20800, + 0x8000001d: 0x820, + 0x8000001e: 0x20020, + 0x8000001f: 0x8020800 + } + ]; + + // Masks that select the SBOX input + var SBOX_MASK = [ + 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, + 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f + ]; + + /** + * DES block cipher algorithm. + */ + var DES = C_algo.DES = BlockCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + + // Select 56 bits according to PC1 + var keyBits = []; + for (var i = 0; i < 56; i++) { + var keyBitPos = PC1[i] - 1; + keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1; + } + + // Assemble 16 subkeys + var subKeys = this._subKeys = []; + for (var nSubKey = 0; nSubKey < 16; nSubKey++) { + // Create subkey + var subKey = subKeys[nSubKey] = []; + + // Shortcut + var bitShift = BIT_SHIFTS[nSubKey]; + + // Select 48 bits according to PC2 + for (var i = 0; i < 24; i++) { + // Select from the left 28 key bits + subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6); + + // Select from the right 28 key bits + subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6); + } + + // Since each subkey is applied to an expanded 32-bit input, + // the subkey can be broken into 8 values scaled to 32-bits, + // which allows the key to be used without expansion + subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); + for (var i = 1; i < 7; i++) { + subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); + } + subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); + } + + // Compute inverse subkeys + var invSubKeys = this._invSubKeys = []; + for (var i = 0; i < 16; i++) { + invSubKeys[i] = subKeys[15 - i]; + } + }, + + encryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._subKeys); + }, + + decryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._invSubKeys); + }, + + _doCryptBlock: function (M, offset, subKeys) { + // Get input + this._lBlock = M[offset]; + this._rBlock = M[offset + 1]; + + // Initial permutation + exchangeLR.call(this, 4, 0x0f0f0f0f); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeRL.call(this, 2, 0x33333333); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeLR.call(this, 1, 0x55555555); + + // Rounds + for (var round = 0; round < 16; round++) { + // Shortcuts + var subKey = subKeys[round]; + var lBlock = this._lBlock; + var rBlock = this._rBlock; + + // Feistel function + var f = 0; + for (var i = 0; i < 8; i++) { + f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; + } + this._lBlock = rBlock; + this._rBlock = lBlock ^ f; + } + + // Undo swap from last round + var t = this._lBlock; + this._lBlock = this._rBlock; + this._rBlock = t; + + // Final permutation + exchangeLR.call(this, 1, 0x55555555); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeRL.call(this, 2, 0x33333333); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeLR.call(this, 4, 0x0f0f0f0f); + + // Set output + M[offset] = this._lBlock; + M[offset + 1] = this._rBlock; + }, + + keySize: 64/32, + + ivSize: 64/32, + + blockSize: 64/32 + }); + + // Swap bits across the left and right words + function exchangeLR(offset, mask) { + var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; + this._rBlock ^= t; + this._lBlock ^= t << offset; + } + + function exchangeRL(offset, mask) { + var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; + this._lBlock ^= t; + this._rBlock ^= t << offset; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); + */ + C.DES = BlockCipher._createHelper(DES); + + /** + * Triple-DES block cipher algorithm. + */ + var TripleDES = C_algo.TripleDES = BlockCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + + // Create DES instances + this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2))); + this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4))); + this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6))); + }, + + encryptBlock: function (M, offset) { + this._des1.encryptBlock(M, offset); + this._des2.decryptBlock(M, offset); + this._des3.encryptBlock(M, offset); + }, + + decryptBlock: function (M, offset) { + this._des3.decryptBlock(M, offset); + this._des2.encryptBlock(M, offset); + this._des1.decryptBlock(M, offset); + }, + + keySize: 192/32, + + ivSize: 64/32, + + blockSize: 64/32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); + */ + C.TripleDES = BlockCipher._createHelper(TripleDES); +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + /** + * RC4 stream cipher algorithm. + */ + var RC4 = C_algo.RC4 = StreamCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + var keySigBytes = key.sigBytes; + + // Init sbox + var S = this._S = []; + for (var i = 0; i < 256; i++) { + S[i] = i; + } + + // Key setup + for (var i = 0, j = 0; i < 256; i++) { + var keyByteIndex = i % keySigBytes; + var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; + + j = (j + S[i] + keyByte) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + } + + // Counters + this._i = this._j = 0; + }, + + _doProcessBlock: function (M, offset) { + M[offset] ^= generateKeystreamWord.call(this); + }, + + keySize: 256/32, + + ivSize: 0 + }); + + function generateKeystreamWord() { + // Shortcuts + var S = this._S; + var i = this._i; + var j = this._j; + + // Generate keystream word + var keystreamWord = 0; + for (var n = 0; n < 4; n++) { + i = (i + 1) % 256; + j = (j + S[i]) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + + keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); + } + + // Update counters + this._i = i; + this._j = j; + + return keystreamWord; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); + */ + C.RC4 = StreamCipher._createHelper(RC4); + + /** + * Modified RC4 stream cipher algorithm. + */ + var RC4Drop = C_algo.RC4Drop = RC4.extend({ + /** + * Configuration options. + * + * @property {number} drop The number of keystream words to drop. Default 192 + */ + cfg: RC4.cfg.extend({ + drop: 192 + }), + + _doReset: function () { + RC4._doReset.call(this); + + // Drop + for (var i = this.cfg.drop; i > 0; i--) { + generateKeystreamWord.call(this); + } + } + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); + */ + C.RC4Drop = StreamCipher._createHelper(RC4Drop); +}()); + + +/** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + */ +CryptoJS.mode.CTRGladman = (function () { + var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); + + function incWord(word) + { + if (((word >> 24) & 0xff) === 0xff) { //overflow + var b1 = (word >> 16)&0xff; + var b2 = (word >> 8)&0xff; + var b3 = word & 0xff; + + if (b1 === 0xff) // overflow b1 + { + b1 = 0; + if (b2 === 0xff) + { + b2 = 0; + if (b3 === 0xff) + { + b3 = 0; + } + else + { + ++b3; + } + } + else + { + ++b2; + } + } + else + { + ++b1; + } + + word = 0; + word += (b1 << 16); + word += (b2 << 8); + word += b3; + } + else + { + word += (0x01 << 24); + } + return word; + } + + function incCounter(counter) + { + if ((counter[0] = incWord(counter[0])) === 0) + { + // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 + counter[1] = incWord(counter[1]); + } + return counter; + } + + var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + + incCounter(counter); + + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTRGladman.Decryptor = Encryptor; + + return CTRGladman; +}()); + + + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm + */ + var Rabbit = C_algo.Rabbit = StreamCipher.extend({ + _doReset: function () { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Swap endian + for (var i = 0; i < 4; i++) { + K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | + (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); + } + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128/32, + + ivSize: 64/32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); + * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); + */ + C.Rabbit = StreamCipher._createHelper(Rabbit); +}()); + + +/** + * Counter block mode. + */ +CryptoJS.mode.CTR = (function () { + var CTR = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = CTR.Encryptor = CTR.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Increment counter + counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTR.Decryptor = Encryptor; + + return CTR; +}()); + + +(function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm. + * + * This is a legacy version that neglected to convert the key to little-endian. + * This error doesn't affect the cipher's security, + * but it does affect its compatibility with other implementations. + */ + var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({ + _doReset: function () { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128/32, + + ivSize: 64/32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); + */ + C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); +}()); + + +/** + * Zero padding strategy. + */ +CryptoJS.pad.ZeroPadding = { + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Pad + data.clamp(); + data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes); + }, + + unpad: function (data) { + // Shortcut + var dataWords = data.words; + + // Unpad + var i = data.sigBytes - 1; + while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) { + i--; + } + data.sigBytes = i + 1; + } +}; + diff --git a/ant-design-vue-jeecg/src/utils/filter.js b/ant-design-vue-jeecg/src/utils/filter.js new file mode 100644 index 0000000..43c77ef --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/filter.js @@ -0,0 +1,30 @@ +import Vue from "vue"; +import * as dayjs from "dayjs"; + +Vue.filter('NumberFormat', function (value) { + if (!value) { + return '0' + } + let intPartFormat = value.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') //将整数部分逢三一断 + return intPartFormat +}) + +Vue.filter('dayjs', function(dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') { + return dayjs(dataStr).format(pattern) +}) + +Vue.filter('moment', function(dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') { + return dayjs(dataStr).format(pattern) +}) + +/** 字符串超长截取省略号显示 */ +Vue.filter('ellipsis', function (value, vlength = 25) { + if(!value){ + return ""; + } + console.log('vlength: '+ vlength); + if (value.length > vlength) { + return value.slice(0, vlength) + '...' + } + return value +}) \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/hasPermission.js b/ant-design-vue-jeecg/src/utils/hasPermission.js new file mode 100644 index 0000000..f579728 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/hasPermission.js @@ -0,0 +1,135 @@ +import { USER_AUTH,SYS_BUTTON_AUTH } from "@/store/mutation-types" + +const hasPermission = { + install (Vue, options) { + //console.log(options); + Vue.directive('has', { + inserted: (el, binding, vnode)=>{ + //console.log("页面权限控制----"); + //console.time() + //节点权限处理,如果命中则不进行全局权限处理 + if(!filterNodePermission(el, binding, vnode)){ + filterGlobalPermission(el, binding, vnode); + } + //console.timeEnd() //计时结束并输出时长 + } + }); + } +}; + +/** + * 流程节点权限控制 + */ +export function filterNodePermission(el, binding, vnode) { + let permissionList = []; + try { + let obj = vnode.context.$props.formData; + if (obj) { + let bpmList = obj.permissionList; + for (let bpm of bpmList) { + if(bpm.type != '2') { + permissionList.push(bpm); + } + } + }else{ + return false; + } + } catch (e) { + //console.log("页面权限异常----", e); + } + if (permissionList === null || permissionList === "" || permissionList === undefined||permissionList.length<=0) { + //el.parentNode.removeChild(el) + return false; + } + + console.log("流程节点页面权限--NODE--"); + let permissions = []; + for (let item of permissionList) { + if(item.type != '2') { + permissions.push(item.action); + } + } + //console.log("页面权限----"+permissions); + //console.log("页面权限----"+binding.value); + if (!permissions.includes(binding.value)) { + //el.parentNode.removeChild(el) + return false; + }else{ + for (let item2 of permissionList) { + if(binding.value === item2.action){ + return true; + } + } + } + return false; +} + +/** + * 全局权限控制 + */ +export function filterGlobalPermission(el, binding, vnode) { + //console.log("全局页面权限--Global--"); + + let permissionList = []; + let allPermissionList = []; + + //let authList = Vue.ls.get(USER_AUTH); + let authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]"); + for (let auth of authList) { + if(auth.type != '2') { + permissionList.push(auth); + } + } + //console.log("页面权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH)); + let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]"); + for (let gauth of allAuthList) { + if(gauth.type != '2') { + allPermissionList.push(gauth); + } + } + //设置全局配置是否有命中 + let invalidFlag = false;//无效命中 + if(allPermissionList != null && allPermissionList != "" && allPermissionList != undefined && allPermissionList.length > 0){ + for (let itemG of allPermissionList) { + if(binding.value === itemG.action){ + if(itemG.status == '0'){ + invalidFlag = true; + break; + } + } + } + } + if(invalidFlag){ + return; + } + if (permissionList === null || permissionList === "" || permissionList === undefined||permissionList.length<=0) { + el.parentNode.removeChild(el); + return; + } + let permissions = []; + for (let item of permissionList) { + //权限策略1显示2禁用 + if(item.type != '2'){ + //update--begin--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU------- + if(item.action){ + if(item.action.includes(",")){ + let split = item.action.split(",") + for (let i = 0; i state.app.layout, + navTheme: state => state.app.theme, + primaryColor: state => state.app.color, + colorWeak: state => state.app.weak, + multipage: state => state.app.multipage,//多页签设置 + fixedHeader: state => state.app.fixedHeader, + fixSiderbar: state => state.app.fixSiderbar, + contentWidth: state => state.app.contentWidth, + autoHideHeader: state => state.app.autoHideHeader, + sidebarOpened: state => state.app.sidebar.opened + }) + } +} + +const mixinDevice = { + computed: { + ...mapState({ + device: state => state.app.device, + }) + }, + methods: { + isMobile () { + return this.device === 'mobile' + }, + isDesktop () { + return this.device === 'desktop' + } + } +} + +export { mixin, mixinDevice } \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/permissions.js b/ant-design-vue-jeecg/src/utils/permissions.js new file mode 100644 index 0000000..e4b60bc --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/permissions.js @@ -0,0 +1,8 @@ +export function actionToObject(json) { + try { + return JSON.parse(json) + } catch (e) { + console.log('err', e.message) + } + return [] +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/portal/constant.js b/ant-design-vue-jeecg/src/utils/portal/constant.js new file mode 100644 index 0000000..cadf2ba --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/portal/constant.js @@ -0,0 +1,20 @@ +/** + * 功能模块 + * @type {{LEAVE_EARLY: {text: string, value: string}, LATE: {text: string, value: string}, ABSENT: {text: string, value: string}, NO_SIGN: {text: string, value: string}, NORMAL: {text: string, value: string}}} + */ +export const FunctionEnum = { + EoaCmsBanner: { path: 'modules/eoa/cmsoa/modules/EoaCmsBanner', formData: 'carouselImg' }, + EoaCmsNewsInfo: { path: 'modules/eoa/cmsoa/modules/EoaCmsNewsInfo', formData: 'newsInfo' }, + EoaCmsRuleInfo: { path: 'modules/eoa/cmsoa/modules/EoaCmsRuleInfo', formData: 'ruleDownInfo' }, + EoaCmsSignNews: { path: 'modules/eoa/cmsoa/modules/EoaCmsSignNews', formData: 'signNews' }, + EoaCmsUserNotice: { path: 'modules/eoa/cmsoa/modules/EoaCmsUserNotice', formData: 'userNotice' }, + EoaCmsPlan: { path: 'modules/eoa/cmsoa/modules/EoaCmsPlan', formData: '' }, + EoaCmsLink: { path: 'modules/eoa/cmsoa/modules/EoaCmsLink', formData: '' }, + EoaCmsCommUse:{ path: 'modules/eoa/cmsbpm/modules/EoaCmsCommUse', formData: '' }, + EoaCmsMyProcess:{ path: 'modules/eoa/cmsbpm/modules/EoaCmsMyProcess', formData: '' }, + EoaCmsApplyProcess:{ path: 'modules/eoa/cmsbpm/modules/EoaCmsApplyProcess', formData: '' }, + EoaCmsProcessNotice:{ path: 'modules/eoa/cmsbpm/modules/EoaCmsProcessNotice', formData: '' }, + EoaCmsProcessChatData:{ path: 'modules/eoa/cmsbpm/modules/EoaCmsProcessChatData', formData: '' }, + EoaCmsProcessTypeChat:{ path: 'modules/eoa/cmsbpm/modules/EoaCmsProcessTypeChat', formData: '' }, + EoaCmsEmail:{ path: 'modules/eoa/cmsbpm/modules/EoaCmsEmail', formData: '' }, +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/props-util.js b/ant-design-vue-jeecg/src/utils/props-util.js new file mode 100644 index 0000000..9c94200 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/props-util.js @@ -0,0 +1,115 @@ +/** + * 该文件截取自 "ant-design-vue/es/_util/props-util.js" 文件,并对其做出特殊修改 + */ +function classNames() { + let classes = [] + + for (let i = 0; i < arguments.length; i++) { + let arg = arguments[i] + if (!arg) continue + + let argType = typeof arg + + if (argType === 'string' || argType === 'number') { + classes.push(arg) + } else if (Array.isArray(arg) && arg.length) { + let inner = classNames.apply(null, arg) + if (inner) { + classes.push(inner) + } + } else if (argType === 'object') { + for (let key in arg) { + if (arg.hasOwnProperty(key) && arg[key]) { + classes.push(key) + } + } + } + } + return classes.join(' ') +} + +const camelizeRE = /-(\w)/g + +function camelize(str) { + return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')) +} + + +function objectCamelize(obj) { + let res = {} + Object.keys(obj).forEach(k => (res[camelize(k)] = obj[k])) + return res +} + +function parseStyleText(cssText = '', camel) { + const res = {} + const listDelimiter = /;(?![^(]*\))/g + const propertyDelimiter = /:(.+)/ + cssText.split(listDelimiter).forEach(function (item) { + if (item) { + const tmp = item.split(propertyDelimiter) + if (tmp.length > 1) { + const k = camel ? camelize(tmp[0].trim()) : tmp[0].trim() + res[k] = tmp[1].trim() + } + } + }) + return res +} + +export function getClass(ele) { + let data = {} + if (ele.data) { + data = ele.data + } else if (ele.$vnode && ele.$vnode.data) { + data = ele.$vnode.data + } + const tempCls = data.class || {} + const staticClass = data.staticClass + let cls = {} + staticClass && + staticClass.split(' ').forEach(c => { + cls[c.trim()] = true + }) + if (typeof tempCls === 'string') { + tempCls.split(' ').forEach(c => { + cls[c.trim()] = true + }) + } else if (Array.isArray(tempCls)) { + classNames(tempCls) + .split(' ') + .forEach(c => { + cls[c.trim()] = true + }) + } else { + cls = { ...cls, ...tempCls } + } + return cls +} + +export function getStyle(ele, camel) { + + getClass(ele) + + let data = {} + if (ele.data) { + data = ele.data + } else if (ele.$vnode && ele.$vnode.data) { + data = ele.$vnode.data + } + + // update-begin-author:sunjianlei date:20200303 for: style 和 staticStyle 可以共存 + let style = data.style || {} + let staticStyle = data.staticStyle + staticStyle = staticStyle ? objectCamelize(data.staticStyle) : {} + // update-end-author:sunjianlei date:20200303 for: style 和 staticStyle 可以共存 + + if (typeof style === 'string') { + style = parseStyleText(style, camel) + } else if (camel && style) { + // 驼峰化 + style = objectCamelize(style) + } + return { ...staticStyle, ...style } +} + diff --git a/ant-design-vue-jeecg/src/utils/request.js b/ant-design-vue-jeecg/src/utils/request.js new file mode 100644 index 0000000..1fd33f8 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/request.js @@ -0,0 +1,187 @@ +import Vue from 'vue' +import axios from 'axios' +import store from '@/store' +import {VueAxios} from './axios' +import {Modal, notification} from 'ant-design-vue' +import {ACCESS_TOKEN, TENANT_ID} from '@/store/mutation-types' + +axios.defaults.withCredentials = true +/** + * 【指定 axios的 baseURL】 + * 如果手工指定 baseURL: '/jeecg-boot' + * 则映射后端域名,通过 vue.config.js + * @type {*|string} + */ + +let apiBaseUrl = window._CONFIG['domianURL'] || '/jeecg-boot' +//console.log("apiBaseUrl= ",apiBaseUrl) +// 创建 axios 实例 +const service = axios.create({ + //baseURL: '/jeecg-boot', + baseURL: apiBaseUrl, // api base_url + // timeout: 9000 // 请求超时时间 + timeout: 0, +}) + +const err = (error) => { + if (error.response) { + let data = error.response.data + const token = Vue.ls.get(ACCESS_TOKEN) + console.log('------异常响应------', token) + console.log('------异常响应------', error.response.status) + switch (error.response.status) { + case 403: + notification.error({message: '系统提示', description: '拒绝访问', duration: 4}) + break + case 500: + console.log('------error.response------', error.response) + // update-begin- --- author:liusq ------ date:20200910 ---- for:处理Blob情况---- + let type = error.response.request.responseType + if (type === 'blob') { + blobToJson(data) + break + } + // update-end- --- author:liusq ------ date:20200910 ---- for:处理Blob情况---- + //notification.error({ message: '系统提示', description:'Token失效,请重新登录!',duration: 4}) + if (token && data.message.includes('Token失效')) { + // update-begin- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转---- + Modal.error({ + title: '登录已过期', + content: '很抱歉,登录已过期,请重新登录', + okText: '重新登录', + mask: false, + onOk: () => { + store.dispatch('Logout').then(() => { + Vue.ls.remove(ACCESS_TOKEN) + try { + let path = window.document.location.pathname + console.log('location pathname -> ' + path) + if (path != '/' && path.indexOf('/user/login') == -1) { + window.location.reload() + } + } catch (e) { + window.location.reload() + } + }) + } + }) + // update-end- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转---- + } + break + case 404: + notification.error({message: '系统提示', description: '很抱歉,资源未找到!', duration: 4}) + break + case 504: + notification.error({message: '系统提示', description: '网络超时'}) + break + case 401: + notification.error({message: '系统提示', description: '未授权,请重新登录', duration: 4}) + if (token) { + store.dispatch('Logout').then(() => { + setTimeout(() => { + window.location.reload() + }, 1500) + }) + } + break + default: + notification.error({ + message: '系统提示', + description: data.message, + duration: 4 + }) + break + } + } + return Promise.reject(error) +} + +// request interceptor +service.interceptors.request.use(config => { + const token = Vue.ls.get(ACCESS_TOKEN) + if (token) { + config.headers['X-Access-Token'] = token // 让每个请求携带自定义 token 请根据实际情况自行修改 + } + //update-begin-author:taoyan date:2020707 for:多租户 + let tenantid = Vue.ls.get(TENANT_ID) + if (!tenantid) { + tenantid = 0 + } + config.headers['tenant-id'] = tenantid + //update-end-author:taoyan date:2020707 for:多租户 + if (config.method == 'get') { + if (config.url.indexOf('sys/dict/getDictItems') < 0) { + config.params = { + _t: Date.parse(new Date()) / 1000, + ...config.params + + } + } + } + return config +}, (error) => { + return Promise.reject(error) +}) + +// response interceptor +service.interceptors.response.use((response) => { + + if (response.config.responseType === "blob") { + let subUrl = response.config.url.substring(response.config.url.length - 13) + // 自定义判断请求路径,可以拿到headers的值 + if (subUrl === 'downloadKmDoc') { + return response + } + } + + return response.data + +}, err) + +const installer = { + vm: {}, + install(Vue, router = {}) { + Vue.use(VueAxios, router, service) + } +} + +/** + * Blob解析 + * @param data + */ +function blobToJson(data) { + let fileReader = new FileReader() + let token = Vue.ls.get(ACCESS_TOKEN) + fileReader.onload = function () { + try { + let jsonData = JSON.parse(this.result) // 说明是普通对象数据,后台转换失败 + console.log('jsonData', jsonData) + if (jsonData.status === 500) { + console.log('token----------》', token) + if (token && jsonData.message.includes('Token失效')) { + Modal.error({ + title: '登录已过期', + content: '很抱歉,登录已过期,请重新登录', + okText: '重新登录', + mask: false, + onOk: () => { + store.dispatch('Logout').then(() => { + Vue.ls.remove(ACCESS_TOKEN) + window.location.reload() + }) + } + }) + } + } + } catch (err) { + // 解析成对象失败,说明是正常的文件流 + console.log('blob解析fileReader返回err', err) + } + } + fileReader.readAsText(data) +} + +export { + installer as VueAxios, + service as axios +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/rules.js b/ant-design-vue-jeecg/src/utils/rules.js new file mode 100644 index 0000000..8386e61 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/rules.js @@ -0,0 +1,110 @@ +const validateMobile = (rule, value, callback) => { + let reg = /^1(3|4|5|7|8)\d{9}$/ + if (!reg.test(value)) { + callback('请输入正确手机号') + } else { + callback() + } +} +const validateEn = (rule, value, callback) => { + let reg = /^[_a-zA-Z0-9]+$/ + let reg2 = /^.{4,18}$/ + // 长度为6到18个字符 + if (value !== '' && !reg.test(value)) { + callback('只允许字母、数字、下划线') + } else if (value !== '' && !reg2.test(value)) { + callback('长度6到18个字符') + } else { + callback() + } +} +export const rules = { + mobile: [{ + required: true, + message: '请输入手机号', + trigger: 'blur' + }, { validator: validateMobile, trigger: 'blur' }], + userName: [{ + required: true, message: '请输入用户名', trigger: 'blur' + }, { validator: validateEn }], + email: [ + { required: false, type: 'email', message: '邮箱格式不正确', trigger: 'blur' } + ], + // 验证自然数 + naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$/, + naturalNumberMsg: '请输入自然数', + // 英文 + english: /^.[A-Za-z]+$/, + englishMsg: '请输入英文字符', + // 座机 + telephone: /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/, + telephoneMsg: '请输入正确的座机号', + // 银行卡号码 + bankCard: /^[1-9]\d{9,19}$/, + bankCardMsg: '请输入正确的银行卡号码', + // 证件号码 + IDNumber: /^[a-z0-9A-Z]{0,50}$/, + IDNumberMsg: '请输入正确的证件号码', + // 身份证号码,包括15位和18位的 + IDCard: /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/, + IDCardMsg: '请输入正确的身份证号码', + // QQ号码 + qq: /^[1-9]\d{4,11}$/, + qqMsg: '请输入正确的QQ号码', + // 网址, 仅支持http和https开头的 + url: /^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/, + urlMsg: '请输入以http和https开头的网址', + // 0到20位的英文字符和数字 + enNum0to20: /^[a-z0-9A-Z]{0,20}$/, + enNum0to20Msg: '请输入20位以内的英文字符和数字', + // 2到100位的中英文字符和空格 + cnEnSpace2to100: /^[a-zA-Z\u4E00-\u9FA5\s*]{2,100}$/, + cnEnSpace2to100Msg: '请输入2到100位的中英文字符和空格', + // 数字和换行符 + numLinefeed: /^[0-9\n*]+$/, + numLinefeedMsg: '请输入数字和换行符', + // 255位以内的字符 + char0to255: /^.{0,255}$/, + char0to255Msg: '请输入255位以内的字符', + required: function(min, max) { + let rule = [{ required: true, message: '', trigger: 'blur' }] + if (min) { + let r = { min: min, message: '最小长度' + min + '位字符' } + rule.push(r) + } + if (max) { + let m = { max: max, message: '最大长度' + max + '位字符' } + rule.push(m) + } + return rule + }, + select: function() { + let rule = [{ required: true, message: '', trigger: 'change' }] + return rule + }, + checked: function(min, max) { + let rule = [{ required: true, type: 'array', message: '', trigger: 'change' }] + if (min) { + let r = { type: 'array', min: min, message: '最少选择' + min + '项' } + rule.push(r) + } + if (max) { + let m = { type: 'array', max: max, message: '最多选择' + max + '项' } + rule.push(m) + } + return rule + } +} +/** + * @description 排序值验证,排序值不可以大于255 + */ +export const validateOrder = function(rule, value, callback) { + if (parseInt(value) > 255) { + return callback(new Error('排序值不可以大于255')) + } else { + callback() + } +} + + + diff --git a/ant-design-vue-jeecg/src/utils/storage.js b/ant-design-vue-jeecg/src/utils/storage.js new file mode 100644 index 0000000..b3c29ab --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/storage.js @@ -0,0 +1,78 @@ +/** + * Set storage + * + * @param name + * @param content + * @param maxAge + */ +export const setStore = (name, content, maxAge = null) => { + if (!global.window || !name) { + return; + } + + if (typeof content !== 'string') { + content = JSON.stringify(content) + } + + let storage = global.window.localStorage + + storage.setItem(name, content) + if (maxAge && !isNaN(parseInt(maxAge))) { + let timeout = parseInt(new Date().getTime() / 1000) + storage.setItem(`${name}_expire`, timeout + maxAge) + } +}; + +/** + * Get storage + * + * @param name + * @returns {*} + */ +export const getStore = name => { + if (!global.window || !name) { + return; + } + + let content = window.localStorage.getItem(name) + let _expire = window.localStorage.getItem(`${name}_expire`) + + if (_expire) { + let now = parseInt(new Date().getTime() / 1000) + if (now > _expire) { + return; + } + } + + try { + return JSON.parse(content) + } catch (e) { + return content + } +}; + +/** + * Clear storage + * + * @param name + */ +export const clearStore = name => { + if (!global.window || !name) { + return; + } + + window.localStorage.removeItem(name) + window.localStorage.removeItem(`${name}_expire`) +}; + +/** + * Clear all storage + */ +export const clearAll = () => { + if (!global.window || !name) { + return; + } + + window.localStorage.clear() +} + diff --git a/ant-design-vue-jeecg/src/utils/util.js b/ant-design-vue-jeecg/src/utils/util.js new file mode 100644 index 0000000..5255e47 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/util.js @@ -0,0 +1,562 @@ +import * as api from '@/api/api' +import { isURL } from '@/utils/validate' +import onlineCommons from '@jeecg/antd-online-mini' + +export function timeFix() { + const time = new Date() + const hour = time.getHours() + return hour < 9 ? '早上好' : (hour <= 11 ? '上午好' : (hour <= 13 ? '中午好' : (hour < 20 ? '下午好' : '晚上好'))) +} + +export function welcome() { + const arr = ['休息一会儿吧', '准备吃什么呢?', '要不要打一把 DOTA', '我猜你可能累了'] + let index = Math.floor((Math.random()*arr.length)) + return arr[index] +} + +/** + * 触发 window.resize + */ +export function triggerWindowResizeEvent() { + let event = document.createEvent('HTMLEvents') + event.initEvent('resize', true, true) + event.eventType = 'message' + window.dispatchEvent(event) +} + +/** + * 过滤对象中为空的属性 + * @param obj + * @returns {*} + */ +export function filterObj(obj) { + if (!(typeof obj == 'object')) { + return; + } + + for ( let key in obj) { + if (obj.hasOwnProperty(key) + && (obj[key] == null || obj[key] == undefined || obj[key] === '')) { + delete obj[key]; + } + } + return obj; +} + +/** + * 时间格式化 + * @param value + * @param fmt + * @returns {*} + */ +export function formatDate(value, fmt) { + let regPos = /^\d+(\.\d+)?$/; + if(regPos.test(value)){ + //如果是数字 + let getDate = new Date(value); + let o = { + 'M+': getDate.getMonth() + 1, + 'd+': getDate.getDate(), + 'h+': getDate.getHours(), + 'm+': getDate.getMinutes(), + 's+': getDate.getSeconds(), + 'q+': Math.floor((getDate.getMonth() + 3) / 3), + 'S': getDate.getMilliseconds() + }; + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (getDate.getFullYear() + '').substr(4 - RegExp.$1.length)) + } + for (let k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) + } + } + return fmt; + }else{ + //TODO + value = value.trim(); + return value.substr(0,fmt.length); + } +} + +// 生成首页路由 +export function generateIndexRouter(data) { +let indexRouter = [{ + path: '/', + name: 'dashboard', + //component: () => import('@/components/layouts/BasicLayout'), + component: resolve => require(['@/components/layouts/TabLayout'], resolve), + meta: { title: '首页' }, + redirect: '/dashboard/analysis', + children: [ + ...generateChildRouters(data) + ] + },{ + "path": "*", "redirect": "/404", "hidden": true + }] + return indexRouter; +} + +// 生成嵌套路由(子路由) + +function generateChildRouters (data) { + const routers = []; + for (let item of data) { + let component = ""; + if(item.component.indexOf("layouts")>=0){ + component = "components/"+item.component; + }else{ + component = "views/"+item.component; + } + + // eslint-disable-next-line + let URL = (item.meta.url|| '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量 + if (isURL(URL)) { + item.meta.url = URL; + } + + let componentPath + if(item.component=="modules/online/cgform/OnlCgformHeadList"){ + componentPath = onlineCommons.OnlCgformHeadList + }else if(item.component=="modules/online/cgform/OnlCgformCopyList"){ + componentPath = onlineCommons.OnlCgformCopyList + }else if(item.component=="modules/online/cgform/auto/OnlCgformAutoList"){ + componentPath = onlineCommons.OnlCgformAutoList + }else if(item.component=="modules/online/cgform/auto/OnlCgformTreeList"){ + componentPath = onlineCommons.OnlCgformTreeList + }else if(item.component=="modules/online/cgform/auto/erp/OnlCgformErpList"){ + componentPath = onlineCommons.OnlCgformErpList + }else if(item.component=="modules/online/cgform/auto/tab/OnlCgformTabList"){ + componentPath = onlineCommons.OnlCgformTabList + }else if(item.component=="modules/online/cgform/auto/innerTable/OnlCgformInnerTableList"){ + componentPath = onlineCommons.OnlCgformInnerTableList + }else if(item.component=="modules/online/cgreport/OnlCgreportHeadList"){ + componentPath = onlineCommons.OnlCgreportHeadList + }else if(item.component=="modules/online/cgreport/auto/OnlCgreportAutoList"){ + componentPath = onlineCommons.OnlCgreportAutoList + }else{ + componentPath = resolve => require(['@/' + component+'.vue'], resolve) + } + + let menu = { + path: item.path, + name: item.name, + redirect:item.redirect, + component: componentPath, + //component: resolve => require(['@/' + component+'.vue'], resolve), + hidden:item.hidden, + meta: { + title:item.meta.title , + icon: item.meta.icon, + url:item.meta.url , + permissionList:item.meta.permissionList, + keepAlive:item.meta.keepAlive, + /*update_begin author:wuxianquan date:20190908 for:赋值 */ + internalOrExternal:item.meta.internalOrExternal, + /*update_end author:wuxianquan date:20190908 for:赋值 */ + componentName:item.meta.componentName + } + } + if(item.alwaysShow){ + menu.alwaysShow = true; + menu.redirect = menu.path; + } + if (item.children && item.children.length > 0) { + menu.children = [...generateChildRouters( item.children)]; + } + //--update-begin----author:scott---date:20190320------for:根据后台菜单配置,判断是否路由菜单字段,动态选择是否生成路由(为了支持参数URL菜单)------ + //判断是否生成路由 + if(item.route && item.route === '0'){ + //console.log(' 不生成路由 item.route: '+item.route); + //console.log(' 不生成路由 item.path: '+item.path); + }else{ + routers.push(menu); + } + //--update-end----author:scott---date:20190320------for:根据后台菜单配置,判断是否路由菜单字段,动态选择是否生成路由(为了支持参数URL菜单)------ + } + return routers +} + +/** + * 深度克隆对象、数组 + * @param obj 被克隆的对象 + * @return 克隆后的对象 + */ +export function cloneObject(obj) { + return JSON.parse(JSON.stringify(obj)) +} + +/** + * 随机生成数字 + * + * 示例:生成长度为 12 的随机数:randomNumber(12) + * 示例:生成 3~23 之间的随机数:randomNumber(3, 23) + * + * @param1 最小值 | 长度 + * @param2 最大值 + * @return int 生成后的数字 + */ +export function randomNumber() { + // 生成 最小值 到 最大值 区间的随机数 + const random = (min, max) => { + return Math.floor(Math.random() * (max - min + 1) + min) + } + if (arguments.length === 1) { + let [length] = arguments + // 生成指定长度的随机数字,首位一定不是 0 + let nums = [...Array(length).keys()].map((i) => (i > 0 ? random(0, 9) : random(1, 9))) + return parseInt(nums.join('')) + } else if (arguments.length >= 2) { + let [min, max] = arguments + return random(min, max) + } else { + return Number.NaN + } +} + +/** + * 随机生成字符串 + * @param length 字符串的长度 + * @param chats 可选字符串区间(只会生成传入的字符串中的字符) + * @return string 生成的字符串 + */ +export function randomString(length, chats) { + if (!length) length = 1 + if (!chats) chats = '0123456789qwertyuioplkjhgfdsazxcvbnm' + let str = '' + for (let i = 0; i < length; i++) { + let num = randomNumber(0, chats.length - 1) + str += chats[num] + } + return str +} + +/** + * 随机生成uuid + * @return string 生成的uuid + */ +export function randomUUID() { + let chats = '0123456789abcdef' + return randomString(32, chats) +} + +/** + * 下划线转驼峰 + * @param string + * @returns {*} + */ +export function underLine2CamelCase(string){ + return string.replace( /_([a-z])/g, function( all, letter ) { + return letter.toUpperCase(); + }); +} + +/** + * 判断是否显示办理按钮 + * @param bpmStatus + * @returns {*} + */ +export function showDealBtn(bpmStatus){ + if(bpmStatus!="1"&&bpmStatus!="3"&&bpmStatus!="4"){ + return true; + } + return false; +} + +/** + * 增强CSS,可以在页面上输出全局css + * @param css 要增强的css + * @param id style标签的id,可以用来清除旧样式 + */ +export function cssExpand(css, id) { + let style = document.createElement('style') + style.type = "text/css" + style.innerHTML = `@charset "UTF-8"; ${css}` + // 清除旧样式 + if (id) { + let $style = document.getElementById(id) + if ($style != null) $style.outerHTML = '' + style.id = id + } + // 应用新样式 + document.head.appendChild(style) +} + + +/** 用于js增强事件,运行JS代码,可以传参 */ +// options 所需参数: +// 参数名 类型 说明 +// vm VueComponent vue实例 +// event Object event对象 +// jsCode String 待执行的js代码 +// errorMessage String 执行出错后的提示(控制台) +export function jsExpand(options = {}) { + + // 绑定到window上的keyName + let windowKeyName = 'J_CLICK_EVENT_OPTIONS' + if (typeof window[windowKeyName] != 'object') { + window[windowKeyName] = {} + } + + // 随机生成JS增强的执行id,防止冲突 + let id = randomString(16, 'qwertyuioplkjhgfdsazxcvbnm'.toUpperCase()) + // 封装按钮点击事件 + let code = ` + (function (o_${id}) { + try { + (function (globalEvent, vm) { + ${options.jsCode} + })(o_${id}.event, o_${id}.vm) + } catch (e) { + o_${id}.error(e) + } + o_${id}.done() + })(window['${windowKeyName}']['EVENT_${id}']) + ` + // 创建script标签 + const script = document.createElement('script') + // 将需要传递的参数挂载到window对象上 + window[windowKeyName]['EVENT_' + id] = { + vm: options.vm, + event: options.event, + // 当执行完成时,无论如何都会调用的回调事件 + done() { + // 执行完后删除新增的 script 标签不会撤销执行结果(已产生的结果不会被撤销) + script.outerHTML = '' + delete window[windowKeyName]['EVENT_' + id] + }, + // 当js运行出错的时候调用的事件 + error(e) { + console.group(`${options.errorMessage || '用户自定义JS增强代码运行出错'}(${new Date()})`) + console.error(e) + console.groupEnd() + } + } + // 将事件挂载到document中 + script.innerHTML = code + document.body.appendChild(script) +} + + +/** + * 重复值验证工具方法 + * + * 使用示例: + * { validator: (rule, value, callback) => validateDuplicateValue('sys_fill_rule', 'rule_code', value, this.model.id, callback) } + * + * @param tableName 被验证的表名 + * @param fieldName 被验证的字段名 + * @param fieldVal 被验证的值 + * @param dataId 数据ID,可空 + * @param callback + */ +export function validateDuplicateValue(tableName, fieldName, fieldVal, dataId, callback) { + if (fieldVal) { + let params = { tableName, fieldName, fieldVal, dataId } + api.duplicateCheck(params).then(res => { + res['success'] ? callback() : callback(res['message']) + }).catch(err => { + callback(err.message || err) + }) + } else { + callback() + } +} + +/** + * 根据编码校验规则code,校验传入的值是否合法 + * + * 使用示例: + * { validator: (rule, value, callback) => validateCheckRule('common', value, callback) } + * + * @param ruleCode 编码校验规则 code + * @param value 被验证的值 + * @param callback + */ +export function validateCheckRule(ruleCode, value, callback) { + if (ruleCode && value) { + value = encodeURIComponent(value) + api.checkRuleByCode({ ruleCode, value }).then(res => { + res['success'] ? callback() : callback(res['message']) + }).catch(err => { + callback(err.message || err) + }) + } else { + callback() + } +} + +/** + * 如果值不存在就 push 进数组,反之不处理 + * @param array 要操作的数据 + * @param value 要添加的值 + * @param key 可空,如果比较的是对象,可能存在地址不一样但值实际上是一样的情况,可以传此字段判断对象中唯一的字段,例如 id。不传则直接比较实际值 + * @returns {boolean} 成功 push 返回 true,不处理返回 false + */ +export function pushIfNotExist(array, value, key) { + for (let item of array) { + if (key && (item[key] === value[key])) { + return false + } else if (item === value) { + return false + } + } + array.push(value) + return true +} + +/** + * 可用于判断是否成功 + * @type {symbol} + */ +export const succeedSymbol = Symbol() +/** + * 可用于判断是否失败 + * @type {symbol} + */ +export const failedSymbol = Symbol() + +/** + * 使 promise 无论如何都会 resolve,除非传入的参数不是一个Promise对象或返回Promise对象的方法 + * 一般用在 Promise.all 中 + * + * @param promise 可传Promise对象或返回Promise对象的方法 + * @returns {Promise} + */ +export function alwaysResolve(promise) { + return new Promise((resolve, reject) => { + let p = promise + if (typeof promise === 'function') { + p = promise() + } + if (p instanceof Promise) { + p.then(data => { + resolve({ type: succeedSymbol, data }) + }).catch(error => { + resolve({ type: failedSymbol, error }) + }) + } else { + reject('alwaysResolve: 传入的参数不是一个Promise对象或返回Promise对象的方法') + } + }) +} + +/** + * 简单实现防抖方法 + * + * 防抖(debounce)函数在第一次触发给定的函数时,不立即执行函数,而是给出一个期限值(delay),比如100ms。 + * 如果100ms内再次执行函数,就重新开始计时,直到计时结束后再真正执行函数。 + * 这样做的好处是如果短时间内大量触发同一事件,只会执行一次函数。 + * + * @param fn 要防抖的函数 + * @param delay 防抖的毫秒数 + * @returns {Function} + */ +export function simpleDebounce(fn, delay = 100) { + let timer = null + return function () { + let args = arguments + if (timer) { + clearTimeout(timer) + } + timer = setTimeout(() => { + fn.apply(this, args) + }, delay) + } +} + +/** + * 不用正则的方式替换所有值 + * @param text 被替换的字符串 + * @param checker 替换前的内容 + * @param replacer 替换后的内容 + * @returns {String} 替换后的字符串 + */ +export function replaceAll(text, checker, replacer) { + let lastText = text + text = text.replace(checker, replacer) + if (lastText !== text) { + return replaceAll(text, checker, replacer) + } + return text +} + +/** + * 获取事件冒泡路径,兼容 IE11,Edge,Chrome,Firefox,Safari + * 目前使用的地方:JEditableTable Span模式 + */ +export function getEventPath(event) { + let target = event.target + let path = (event.composedPath && event.composedPath()) || event.path + + if (path != null) { + return (path.indexOf(window) < 0) ? path.concat(window) : path + } + + if (target === window) { + return [window] + } + + let getParents = (node, memo) => { + memo = memo || [] + const parentNode = node.parentNode + + if (!parentNode) { + return memo + } else { + return getParents(parentNode, memo.concat(parentNode)) + } + } + return [target].concat(getParents(target), window) +} + +/** + * 根据组件名获取父级 + * @param vm + * @param name + * @returns {Vue | null|null|Vue} + */ +export function getVmParentByName(vm, name) { + let parent = vm.$parent + if (parent && parent.$options) { + if (parent.$options.name === name) { + return parent + } else { + let res = getVmParentByName(parent, name) + if (res) { + return res + } + } + } + return null +} + +/** + * 使一个值永远不会为(null | undefined) + * + * @param value 要处理的值 + * @param def 默认值,如果value为(null | undefined)则返回的默认值,可不传,默认为'' + */ +export function neverNull(value, def) { + return value == null ? (neverNull(def, '')) : value +} + +/** + * 根据元素值移除数组中的一个元素 + * @param array 数组 + * @param prod 属性名 + * @param value 属性值 + * @returns {string} + */ +export function removeArrayElement(array, prod, value) { + let index = -1 + for(let i = 0;i=0){ + array.splice(index, 1); + } +} \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/utils/validate.js b/ant-design-vue-jeecg/src/utils/validate.js new file mode 100644 index 0000000..c8edcac --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/validate.js @@ -0,0 +1,31 @@ +/** + * 邮箱 + * @param {*} s + */ +export function isEmail (s) { + return /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s) +} + +/** + * 手机号码 + * @param {*} s + */ +export function isMobile (s) { + return /^1[0-9]{10}$/.test(s) +} + +/** + * 电话号码 + * @param {*} s + */ +export function isPhone (s) { + return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s) +} + +/** + * URL地址 + * @param {*} s + */ +export function isURL (s) { + return /^http[s]?:\/\/.*/.test(s) +} diff --git a/ant-design-vue-jeecg/src/utils/vueBus.js b/ant-design-vue-jeecg/src/utils/vueBus.js new file mode 100644 index 0000000..95235a0 --- /dev/null +++ b/ant-design-vue-jeecg/src/utils/vueBus.js @@ -0,0 +1,5 @@ +import Bus from 'vue'; +let install = function (Vue) { + Vue.prototype.$bus = new Bus() +} +export default { install }; \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/dashboard/Analysis.vue b/ant-design-vue-jeecg/src/views/dashboard/Analysis.vue new file mode 100644 index 0000000..e9293e9 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/dashboard/Analysis.vue @@ -0,0 +1,32 @@ + + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/dashboard/IndexChart.vue b/ant-design-vue-jeecg/src/views/dashboard/IndexChart.vue new file mode 100644 index 0000000..d1387a0 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/dashboard/IndexChart.vue @@ -0,0 +1,187 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/exception/403.vue b/ant-design-vue-jeecg/src/views/exception/403.vue new file mode 100644 index 0000000..e9fc399 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/exception/403.vue @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/exception/404.vue b/ant-design-vue-jeecg/src/views/exception/404.vue new file mode 100644 index 0000000..bc747b5 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/exception/404.vue @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/exception/500.vue b/ant-design-vue-jeecg/src/views/exception/500.vue new file mode 100644 index 0000000..a36cabe --- /dev/null +++ b/ant-design-vue-jeecg/src/views/exception/500.vue @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/exception/ExceptionPage.vue b/ant-design-vue-jeecg/src/views/exception/ExceptionPage.vue new file mode 100644 index 0000000..0550d5e --- /dev/null +++ b/ant-design-vue-jeecg/src/views/exception/ExceptionPage.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/exception/type.js b/ant-design-vue-jeecg/src/views/exception/type.js new file mode 100644 index 0000000..ece3936 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/exception/type.js @@ -0,0 +1,19 @@ +const types = { + 403: { + img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg', + title: '403', + desc: '抱歉,你无权访问该页面' + }, + 404: { + img: 'https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg', + title: '404', + desc: '抱歉,你访问的页面不存在或无权访问' + }, + 500: { + img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg', + title: '500', + desc: '抱歉,服务器出错了' + } +} + +export default types \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/Common/SearchHeader.vue b/ant-design-vue-jeecg/src/views/km/Common/SearchHeader.vue new file mode 100644 index 0000000..e0ce683 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/Common/SearchHeader.vue @@ -0,0 +1,61 @@ + + + + diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/DictItemList.vue b/ant-design-vue-jeecg/src/views/km/datasetting/DictItemList.vue new file mode 100644 index 0000000..84a618c --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/DictItemList.vue @@ -0,0 +1,232 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/DictList.vue b/ant-design-vue-jeecg/src/views/km/datasetting/DictList.vue new file mode 100644 index 0000000..fcf3a50 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/DictList.vue @@ -0,0 +1,173 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/KmSysConfigList.vue b/ant-design-vue-jeecg/src/views/km/datasetting/KmSysConfigList.vue new file mode 100644 index 0000000..5b8318f --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/KmSysConfigList.vue @@ -0,0 +1,128 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/modules/DictItemModal.vue b/ant-design-vue-jeecg/src/views/km/datasetting/modules/DictItemModal.vue new file mode 100644 index 0000000..1543be0 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/modules/DictItemModal.vue @@ -0,0 +1,188 @@ + + + diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/modules/DictModal.vue b/ant-design-vue-jeecg/src/views/km/datasetting/modules/DictModal.vue new file mode 100644 index 0000000..66cd824 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/modules/DictModal.vue @@ -0,0 +1,150 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigForm.vue b/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigForm.vue new file mode 100644 index 0000000..1904aa2 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigForm.vue @@ -0,0 +1,116 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigModal.vue b/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigModal.vue new file mode 100644 index 0000000..029b956 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigModal.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigModal__Style#Drawer.vue b/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigModal__Style#Drawer.vue new file mode 100644 index 0000000..c8c4d16 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/modules/KmSysConfigModal__Style#Drawer.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/datasetting/modules/SysCategoryModal.vue b/ant-design-vue-jeecg/src/views/km/datasetting/modules/SysCategoryModal.vue new file mode 100644 index 0000000..67b5eda --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/datasetting/modules/SysCategoryModal.vue @@ -0,0 +1,199 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/DraftsList.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/DraftsList.vue new file mode 100644 index 0000000..edbcf67 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/DraftsList.vue @@ -0,0 +1,1106 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/FileStatisticsList.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/FileStatisticsList.vue new file mode 100644 index 0000000..5311ef6 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/FileStatisticsList.vue @@ -0,0 +1,122 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/KmDocFavouriteList.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/KmDocFavouriteList.vue new file mode 100644 index 0000000..691250a --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/KmDocFavouriteList.vue @@ -0,0 +1,614 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/modules/KmDocFavouriteForm.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/KmDocFavouriteForm.vue new file mode 100644 index 0000000..46b23e6 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/KmDocFavouriteForm.vue @@ -0,0 +1,109 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/modules/KmDocFavouriteModal.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/KmDocFavouriteModal.vue new file mode 100644 index 0000000..9ab30dc --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/KmDocFavouriteModal.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/modules/SubjectForm.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/SubjectForm.vue new file mode 100644 index 0000000..8ba3f8a --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/SubjectForm.vue @@ -0,0 +1,273 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/modules/SubjectModal.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/SubjectModal.vue new file mode 100644 index 0000000..d6a3a0c --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/SubjectModal.vue @@ -0,0 +1,55 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/modules/UploadForm.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/UploadForm.vue new file mode 100644 index 0000000..b4d6479 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/UploadForm.vue @@ -0,0 +1,100 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/modules/UploadModal.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/UploadModal.vue new file mode 100644 index 0000000..ab86654 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/modules/UploadModal.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/search/AdvancedSearch.vue b/ant-design-vue-jeecg/src/views/km/search/AdvancedSearch.vue new file mode 100644 index 0000000..4f14b98 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/search/AdvancedSearch.vue @@ -0,0 +1,779 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/search/DefaultDocSearch.vue b/ant-design-vue-jeecg/src/views/km/search/DefaultDocSearch.vue new file mode 100644 index 0000000..ebf8625 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/search/DefaultDocSearch.vue @@ -0,0 +1,726 @@ + + + + + + diff --git a/ant-design-vue-jeecg/src/views/km/search/DocSearch.vue b/ant-design-vue-jeecg/src/views/km/search/DocSearch.vue new file mode 100644 index 0000000..832410c --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/search/DocSearch.vue @@ -0,0 +1,818 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/km/search/Login.vue b/ant-design-vue-jeecg/src/views/km/search/Login.vue new file mode 100644 index 0000000..f226319 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/km/search/Login.vue @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/modules/message/SysMessageList.vue b/ant-design-vue-jeecg/src/views/modules/message/SysMessageList.vue new file mode 100644 index 0000000..6897e11 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/message/SysMessageList.vue @@ -0,0 +1,238 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/modules/message/SysMessageTemplateList.vue b/ant-design-vue-jeecg/src/views/modules/message/SysMessageTemplateList.vue new file mode 100644 index 0000000..8bd196f --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/message/SysMessageTemplateList.vue @@ -0,0 +1,253 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageModal.vue b/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageModal.vue new file mode 100644 index 0000000..9f6231c --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageModal.vue @@ -0,0 +1,185 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageTemplateModal.vue b/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageTemplateModal.vue new file mode 100644 index 0000000..b88fb87 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageTemplateModal.vue @@ -0,0 +1,223 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageTestModal.vue b/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageTestModal.vue new file mode 100644 index 0000000..7848398 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/message/modules/SysMessageTestModal.vue @@ -0,0 +1,122 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/modules/monitor/DiskMonitoring.vue b/ant-design-vue-jeecg/src/views/modules/monitor/DiskMonitoring.vue new file mode 100644 index 0000000..71e3bcd --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/monitor/DiskMonitoring.vue @@ -0,0 +1,49 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/modules/monitor/HttpTrace.vue b/ant-design-vue-jeecg/src/views/modules/monitor/HttpTrace.vue new file mode 100644 index 0000000..4c978ba --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/monitor/HttpTrace.vue @@ -0,0 +1,148 @@ + + + + diff --git a/ant-design-vue-jeecg/src/views/modules/monitor/JvmInfo.vue b/ant-design-vue-jeecg/src/views/modules/monitor/JvmInfo.vue new file mode 100644 index 0000000..66e15cf --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/monitor/JvmInfo.vue @@ -0,0 +1,169 @@ + + + diff --git a/ant-design-vue-jeecg/src/views/modules/monitor/RedisInfo.vue b/ant-design-vue-jeecg/src/views/modules/monitor/RedisInfo.vue new file mode 100644 index 0000000..3e7f29e --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/monitor/RedisInfo.vue @@ -0,0 +1,189 @@ + + + diff --git a/ant-design-vue-jeecg/src/views/modules/monitor/RedisTerminal.vue b/ant-design-vue-jeecg/src/views/modules/monitor/RedisTerminal.vue new file mode 100644 index 0000000..e671afa --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/monitor/RedisTerminal.vue @@ -0,0 +1,13 @@ + + + diff --git a/ant-design-vue-jeecg/src/views/modules/monitor/SystemInfo.vue b/ant-design-vue-jeecg/src/views/modules/monitor/SystemInfo.vue new file mode 100644 index 0000000..2d15f11 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/monitor/SystemInfo.vue @@ -0,0 +1,137 @@ + + + diff --git a/ant-design-vue-jeecg/src/views/modules/monitor/TomcatInfo.vue b/ant-design-vue-jeecg/src/views/modules/monitor/TomcatInfo.vue new file mode 100644 index 0000000..0b6344f --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/monitor/TomcatInfo.vue @@ -0,0 +1,150 @@ + + + diff --git a/ant-design-vue-jeecg/src/views/modules/oss/OSSFileList.vue b/ant-design-vue-jeecg/src/views/modules/oss/OSSFileList.vue new file mode 100644 index 0000000..7141f12 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/modules/oss/OSSFileList.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/ant-design-vue-jeecg/src/views/system/AddressList.vue b/ant-design-vue-jeecg/src/views/system/AddressList.vue new file mode 100644 index 0000000..f6a1a41 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/AddressList.vue @@ -0,0 +1,31 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DataLogList.vue b/ant-design-vue-jeecg/src/views/system/DataLogList.vue new file mode 100644 index 0000000..98351e2 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DataLogList.vue @@ -0,0 +1,138 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DepartList.vue b/ant-design-vue-jeecg/src/views/system/DepartList.vue new file mode 100644 index 0000000..9f21bd7 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DepartList.vue @@ -0,0 +1,623 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DepartList2.vue b/ant-design-vue-jeecg/src/views/system/DepartList2.vue new file mode 100644 index 0000000..09939ed --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DepartList2.vue @@ -0,0 +1,260 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DepartListSync.vue b/ant-design-vue-jeecg/src/views/system/DepartListSync.vue new file mode 100644 index 0000000..c412836 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DepartListSync.vue @@ -0,0 +1,680 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DepartUserList.vue b/ant-design-vue-jeecg/src/views/system/DepartUserList.vue new file mode 100644 index 0000000..76171c1 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DepartUserList.vue @@ -0,0 +1,221 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DictDeleteList.vue b/ant-design-vue-jeecg/src/views/system/DictDeleteList.vue new file mode 100644 index 0000000..d033480 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DictDeleteList.vue @@ -0,0 +1,138 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DictItemList.vue b/ant-design-vue-jeecg/src/views/system/DictItemList.vue new file mode 100644 index 0000000..e0359ed --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DictItemList.vue @@ -0,0 +1,225 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/DictList.vue b/ant-design-vue-jeecg/src/views/system/DictList.vue new file mode 100644 index 0000000..42311b4 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/DictList.vue @@ -0,0 +1,208 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/LogList.vue b/ant-design-vue-jeecg/src/views/system/LogList.vue new file mode 100644 index 0000000..0ad9455 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/LogList.vue @@ -0,0 +1,231 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/NewPermissionList.vue b/ant-design-vue-jeecg/src/views/system/NewPermissionList.vue new file mode 100644 index 0000000..e23fa6c --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/NewPermissionList.vue @@ -0,0 +1,228 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/PermissionDataRuleList.vue b/ant-design-vue-jeecg/src/views/system/PermissionDataRuleList.vue new file mode 100644 index 0000000..6a5af2f --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/PermissionDataRuleList.vue @@ -0,0 +1,188 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/PermissionList.vue b/ant-design-vue-jeecg/src/views/system/PermissionList.vue new file mode 100644 index 0000000..5c0081f --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/PermissionList.vue @@ -0,0 +1,195 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/QuartzJobList.vue b/ant-design-vue-jeecg/src/views/system/QuartzJobList.vue new file mode 100644 index 0000000..80eddcb --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/QuartzJobList.vue @@ -0,0 +1,284 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/RoleList.vue b/ant-design-vue-jeecg/src/views/system/RoleList.vue new file mode 100644 index 0000000..f0117c8 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/RoleList.vue @@ -0,0 +1,193 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/RoleUserList.vue b/ant-design-vue-jeecg/src/views/system/RoleUserList.vue new file mode 100644 index 0000000..9bc94be --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/RoleUserList.vue @@ -0,0 +1,542 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue b/ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue new file mode 100644 index 0000000..12fc0d5 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue @@ -0,0 +1,332 @@ +