diff --git a/README.md b/README.md index 0e2d6073b..158ad1d47 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ Legado is a free and open source novel reader for Android. * [Coolapk](https://www.coolapk.com/apk/io.legado.app.release) * [Jsdelivr](https://cdn.jsdelivr.net/gh/gedoor/release@release/) * [\#Beta](https://kunfei.lanzoui.com/b0f810h4b) +* [IzzyOnDroid F-Droid Repository](https://apt.izzysoft.de/fdroid/index/apk/io.legado.app.release) #### IOS-苹果 diff --git a/api.md b/api.md index 4096516be..d63042fca 100644 --- a/api.md +++ b/api.md @@ -1,30 +1,37 @@ # 阅读API + ## 对于Web的配置 -您需要先在设置中启用"Web 服务"。 + +您需要先在设置中启用"Web 服务"。 + ## 使用 + ### Web + 以下说明假设您的操作在本机进行,且开放端口为1234。 如果您要从远程计算机访问[阅读](),请将`127.0.0.1`替换成手机IP。 + #### 插入单个书源 + +请求BODY内容为`JSON`字符串, +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt) + ``` URL = http://127.0.0.1:1234/saveSource Method = POST ``` -请求BODY内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt) - #### 插入多个书源or订阅源 +请求BODY内容为`JSON`字符串, +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 + ``` URL = http://127.0.0.1:1234/saveBookSources URL = http://127.0.0.1:1234/saveRssSources Method = POST ``` -请求BODY内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 - #### 获取书源 ``` @@ -43,151 +50,172 @@ Method = GET #### 删除多个书源or订阅源 +请求BODY内容为`JSON`字符串, +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 + ``` URL = http://127.0.0.1:1234/deleteBookSources URL = http://127.0.0.1:1234/deleteRssSources Method = POST ``` +#### 插入书籍 + 请求BODY内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/Book.kt)。 -#### 插入书籍 ``` URL = http://127.0.0.1:1234/saveBook Method = POST ``` -请求BODY内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/Book.kt)。 - #### 获取所有书籍 + ``` URL = http://127.0.0.1:1234/getBookshelf Method = GET ``` -获取APP内的所有书籍。 +获取APP内的所有书籍。 #### 获取书籍章节列表 + ``` URL = http://127.0.0.1:1234/getChapterList?url=xxx Method = GET ``` -获取指定图书的章节列表。 +获取指定图书的章节列表。 #### 获取书籍内容 + ``` URL = http://127.0.0.1:1234/getBookContent?url=xxx&index=1 Method = GET ``` + 获取指定图书的第`index`章节的文本内容。 #### 获取封面 + ``` URL = http://127.0.0.1:1234/cover?path=xxxxx Method = GET ``` +#### 保存书籍进度 + +请求BODY内容为`JSON`字符串, +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookProgress.kt)。 + +``` +URL = http://127.0.0.1:1234/saveBookProgress +Method = POST +``` ### Content Provider + * 需声明`io.legado.READ_WRITE`权限 * `providerHost`为`包名.readerProvider`, 如`io.legado.app.release.readerProvider`,不同包的地址不同,防止冲突安装失败 * 以下出现的`providerHost`请自行替换 #### 插入单个书源or订阅源 +创建`Key="json"`的`ContentValues`,内容为`JSON`字符串, +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt) + ``` URL = content://providerHost/bookSource/insert URL = content://providerHost/rssSource/insert Method = insert ``` -创建`Key="json"`的`ContentValues`,内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt) - #### 插入多个书源or订阅源 +创建`Key="json"`的`ContentValues`,内容为`JSON`字符串, +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 + ``` URL = content://providerHost/bookSources/insert URL = content://providerHost/rssSources/insert Method = insert ``` -创建`Key="json"`的`ContentValues`,内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 - #### 获取书源or订阅源 +获取指定URL对应的书源信息。 +用`Cursor.getString(0)`取出返回结果。 + ``` URL = content://providerHost/bookSource/query?url=xxx URL = content://providerHost/rssSource/query?url=xxx Method = query ``` -获取指定URL对应的书源信息。 -用`Cursor.getString(0)`取出返回结果。 - #### 获取所有书源or订阅源 +获取APP内的所有订阅源。 +用`Cursor.getString(0)`取出返回结果。 + ``` URL = content://providerHost/bookSources/query URL = content://providerHost/rssSources/query Method = query ``` -获取APP内的所有书源。 -用`Cursor.getString(0)`取出返回结果。 - #### 删除多个书源or订阅源 +创建`Key="json"`的`ContentValues`,内容为`JSON`字符串, +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 + ``` URL = content://providerHost/bookSources/delete URL = content://providerHost/rssSources/delete Method = delete ``` +#### 插入书籍 + 创建`Key="json"`的`ContentValues`,内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/BookSource.kt),**为数组格式**。 +格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/Book.kt)。 -#### 插入书籍 ``` URL = content://providerHost/book/insert Method = insert ``` -创建`Key="json"`的`ContentValues`,内容为`JSON`字符串, -格式参考[这个文件](https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/data/entities/Book.kt)。 - #### 获取所有书籍 + +获取APP内的所有书籍。 +用`Cursor.getString(0)`取出返回结果。 + ``` URL = content://providerHost/books/query Method = query ``` -获取APP内的所有书籍。 +#### 获取书籍章节列表 + +获取指定图书的章节列表。 用`Cursor.getString(0)`取出返回结果。 -#### 获取书籍章节列表 ``` URL = content://providerHost/book/chapter/query?url=xxx Method = query ``` -获取指定图书的章节列表。 -用`Cursor.getString(0)`取出返回结果。 - #### 获取书籍内容 +获取指定图书的第`index`章节的文本内容。 +用`Cursor.getString(0)`取出返回结果。 + ``` URL = content://providerHost/book/content/query?url=xxx&index=1 Method = query ``` -获取指定图书的第`index`章节的文本内容。 -用`Cursor.getString(0)`取出返回结果。 #### 获取封面 + ``` URL = content://providerHost/book/cover/query?path=xxxx Method = query diff --git a/app/build.gradle b/app/build.gradle index a75be02e8..f0a00ad0b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-parcelize' apply plugin: 'kotlin-kapt' apply plugin: 'de.timfreiheit.resourceplaceholders' -//apply plugin: 'com.google.gms.google-services' +apply plugin: 'com.google.gms.google-services' apply from: 'download.gradle' static def releaseTime() { @@ -179,8 +179,10 @@ dependencies { androidTestImplementation 'androidx.compose.ui:ui-test-junit4:1.1.1' //firebase - //implementation platform('com.google.firebase:firebase-bom:29.1.0') - //implementation 'com.google.firebase:firebase-analytics-ktx' + implementation platform('com.google.firebase:firebase-bom:30.0.1') + implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0' + implementation platform('com.google.firebase:firebase-bom:30.0.1') + implementation 'com.google.firebase:firebase-perf-ktx:20.0.6' //media implementation("androidx.media:media:1.6.0") @@ -219,7 +221,7 @@ dependencies { implementation(fileTree(dir: 'cronetlib', include: ['*.jar', '*.aar'])) //Glide - def glideVersion = "4.13.1" + def glideVersion = "4.13.2" implementation("com.github.bumptech.glide:glide:$glideVersion") kapt("com.github.bumptech.glide:compiler:$glideVersion") diff --git a/app/schemas/io.legado.app.data.AppDatabase/49.json b/app/schemas/io.legado.app.data.AppDatabase/49.json new file mode 100644 index 000000000..60bf90828 --- /dev/null +++ b/app/schemas/io.legado.app.data.AppDatabase/49.json @@ -0,0 +1,1654 @@ +{ + "formatVersion": 1, + "database": { + "version": 49, + "identityHash": "2a6f5ee3d0ed9ac13f15183a04a4af45", + "entities": [ + { + "tableName": "books", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`bookUrl` TEXT NOT NULL DEFAULT '', `tocUrl` TEXT NOT NULL DEFAULT '', `origin` TEXT NOT NULL DEFAULT '', `originName` TEXT NOT NULL DEFAULT '', `name` TEXT NOT NULL DEFAULT '', `author` TEXT NOT NULL DEFAULT '', `kind` TEXT, `customTag` TEXT, `coverUrl` TEXT, `customCoverUrl` TEXT, `intro` TEXT, `customIntro` TEXT, `charset` TEXT, `type` INTEGER NOT NULL DEFAULT 0, `group` INTEGER NOT NULL DEFAULT 0, `latestChapterTitle` TEXT, `latestChapterTime` INTEGER NOT NULL DEFAULT 0, `lastCheckTime` INTEGER NOT NULL DEFAULT 0, `lastCheckCount` INTEGER NOT NULL DEFAULT 0, `totalChapterNum` INTEGER NOT NULL DEFAULT 0, `durChapterTitle` TEXT, `durChapterIndex` INTEGER NOT NULL DEFAULT 0, `durChapterPos` INTEGER NOT NULL DEFAULT 0, `durChapterTime` INTEGER NOT NULL DEFAULT 0, `wordCount` TEXT, `canUpdate` INTEGER NOT NULL DEFAULT 1, `order` INTEGER NOT NULL DEFAULT 0, `originOrder` INTEGER NOT NULL DEFAULT 0, `variable` TEXT, `readConfig` TEXT, PRIMARY KEY(`bookUrl`))", + "fields": [ + { + "fieldPath": "bookUrl", + "columnName": "bookUrl", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "tocUrl", + "columnName": "tocUrl", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "origin", + "columnName": "origin", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "originName", + "columnName": "originName", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "author", + "columnName": "author", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "kind", + "columnName": "kind", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "customTag", + "columnName": "customTag", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverUrl", + "columnName": "coverUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "customCoverUrl", + "columnName": "customCoverUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "intro", + "columnName": "intro", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "customIntro", + "columnName": "customIntro", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "charset", + "columnName": "charset", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "group", + "columnName": "group", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "latestChapterTitle", + "columnName": "latestChapterTitle", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "latestChapterTime", + "columnName": "latestChapterTime", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "lastCheckTime", + "columnName": "lastCheckTime", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "lastCheckCount", + "columnName": "lastCheckCount", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "totalChapterNum", + "columnName": "totalChapterNum", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "durChapterTitle", + "columnName": "durChapterTitle", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "durChapterIndex", + "columnName": "durChapterIndex", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "durChapterPos", + "columnName": "durChapterPos", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "durChapterTime", + "columnName": "durChapterTime", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "wordCount", + "columnName": "wordCount", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "canUpdate", + "columnName": "canUpdate", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "order", + "columnName": "order", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "originOrder", + "columnName": "originOrder", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "variable", + "columnName": "variable", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "readConfig", + "columnName": "readConfig", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "bookUrl" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_books_name_author", + "unique": true, + "columnNames": [ + "name", + "author" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_books_name_author` ON `${TABLE_NAME}` (`name`, `author`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "book_groups", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`groupId` INTEGER NOT NULL, `groupName` TEXT NOT NULL, `cover` TEXT, `order` INTEGER NOT NULL, `show` INTEGER NOT NULL, PRIMARY KEY(`groupId`))", + "fields": [ + { + "fieldPath": "groupId", + "columnName": "groupId", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "groupName", + "columnName": "groupName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cover", + "columnName": "cover", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "order", + "columnName": "order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "show", + "columnName": "show", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "groupId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "book_sources", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`bookSourceUrl` TEXT NOT NULL, `bookSourceName` TEXT NOT NULL, `bookSourceGroup` TEXT, `bookSourceType` INTEGER NOT NULL, `bookUrlPattern` TEXT, `customOrder` INTEGER NOT NULL, `enabled` INTEGER NOT NULL, `enabledExplore` INTEGER NOT NULL, `enabledCookieJar` INTEGER DEFAULT 0, `concurrentRate` TEXT, `header` TEXT, `loginUrl` TEXT, `loginUi` TEXT, `loginCheckJs` TEXT, `bookSourceComment` TEXT, `lastUpdateTime` INTEGER NOT NULL, `respondTime` INTEGER NOT NULL, `weight` INTEGER NOT NULL, `exploreUrl` TEXT, `ruleExplore` TEXT, `searchUrl` TEXT, `ruleSearch` TEXT, `ruleBookInfo` TEXT, `ruleToc` TEXT, `ruleContent` TEXT, PRIMARY KEY(`bookSourceUrl`))", + "fields": [ + { + "fieldPath": "bookSourceUrl", + "columnName": "bookSourceUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "bookSourceName", + "columnName": "bookSourceName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "bookSourceGroup", + "columnName": "bookSourceGroup", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookSourceType", + "columnName": "bookSourceType", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "bookUrlPattern", + "columnName": "bookUrlPattern", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "customOrder", + "columnName": "customOrder", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "enabled", + "columnName": "enabled", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "enabledExplore", + "columnName": "enabledExplore", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "enabledCookieJar", + "columnName": "enabledCookieJar", + "affinity": "INTEGER", + "notNull": false, + "defaultValue": "0" + }, + { + "fieldPath": "concurrentRate", + "columnName": "concurrentRate", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "header", + "columnName": "header", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "loginUrl", + "columnName": "loginUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "loginUi", + "columnName": "loginUi", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "loginCheckJs", + "columnName": "loginCheckJs", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "bookSourceComment", + "columnName": "bookSourceComment", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lastUpdateTime", + "columnName": "lastUpdateTime", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "respondTime", + "columnName": "respondTime", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "weight", + "columnName": "weight", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "exploreUrl", + "columnName": "exploreUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleExplore", + "columnName": "ruleExplore", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "searchUrl", + "columnName": "searchUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleSearch", + "columnName": "ruleSearch", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleBookInfo", + "columnName": "ruleBookInfo", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleToc", + "columnName": "ruleToc", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleContent", + "columnName": "ruleContent", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "bookSourceUrl" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_book_sources_bookSourceUrl", + "unique": false, + "columnNames": [ + "bookSourceUrl" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_book_sources_bookSourceUrl` ON `${TABLE_NAME}` (`bookSourceUrl`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "chapters", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`url` TEXT NOT NULL, `title` TEXT NOT NULL, `isVolume` INTEGER NOT NULL, `baseUrl` TEXT NOT NULL, `bookUrl` TEXT NOT NULL, `index` INTEGER NOT NULL, `isVip` INTEGER NOT NULL, `isPay` INTEGER NOT NULL, `resourceUrl` TEXT, `tag` TEXT, `start` INTEGER, `end` INTEGER, `startFragmentId` TEXT, `endFragmentId` TEXT, `variable` TEXT, PRIMARY KEY(`url`, `bookUrl`), FOREIGN KEY(`bookUrl`) REFERENCES `books`(`bookUrl`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isVolume", + "columnName": "isVolume", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "baseUrl", + "columnName": "baseUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "bookUrl", + "columnName": "bookUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "index", + "columnName": "index", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isVip", + "columnName": "isVip", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isPay", + "columnName": "isPay", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "resourceUrl", + "columnName": "resourceUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "tag", + "columnName": "tag", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "start", + "columnName": "start", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "end", + "columnName": "end", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "startFragmentId", + "columnName": "startFragmentId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "endFragmentId", + "columnName": "endFragmentId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "variable", + "columnName": "variable", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "url", + "bookUrl" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_chapters_bookUrl", + "unique": false, + "columnNames": [ + "bookUrl" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_chapters_bookUrl` ON `${TABLE_NAME}` (`bookUrl`)" + }, + { + "name": "index_chapters_bookUrl_index", + "unique": true, + "columnNames": [ + "bookUrl", + "index" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_chapters_bookUrl_index` ON `${TABLE_NAME}` (`bookUrl`, `index`)" + } + ], + "foreignKeys": [ + { + "table": "books", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "bookUrl" + ], + "referencedColumns": [ + "bookUrl" + ] + } + ] + }, + { + "tableName": "replace_rules", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL DEFAULT '', `group` TEXT, `pattern` TEXT NOT NULL DEFAULT '', `replacement` TEXT NOT NULL DEFAULT '', `scope` TEXT, `scopeTitle` INTEGER NOT NULL DEFAULT 0, `scopeContent` INTEGER NOT NULL DEFAULT 1, `isEnabled` INTEGER NOT NULL DEFAULT 1, `isRegex` INTEGER NOT NULL DEFAULT 1, `timeoutMillisecond` INTEGER NOT NULL DEFAULT 3000, `sortOrder` INTEGER NOT NULL DEFAULT 0)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "group", + "columnName": "group", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "pattern", + "columnName": "pattern", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "replacement", + "columnName": "replacement", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "scope", + "columnName": "scope", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "scopeTitle", + "columnName": "scopeTitle", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "scopeContent", + "columnName": "scopeContent", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "isEnabled", + "columnName": "isEnabled", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "isRegex", + "columnName": "isRegex", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "1" + }, + { + "fieldPath": "timeoutMillisecond", + "columnName": "timeoutMillisecond", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "3000" + }, + { + "fieldPath": "order", + "columnName": "sortOrder", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_replace_rules_id", + "unique": false, + "columnNames": [ + "id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_replace_rules_id` ON `${TABLE_NAME}` (`id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "searchBooks", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`bookUrl` TEXT NOT NULL, `origin` TEXT NOT NULL, `originName` TEXT NOT NULL, `type` INTEGER NOT NULL, `name` TEXT NOT NULL, `author` TEXT NOT NULL, `kind` TEXT, `coverUrl` TEXT, `intro` TEXT, `wordCount` TEXT, `latestChapterTitle` TEXT, `tocUrl` TEXT NOT NULL, `time` INTEGER NOT NULL, `variable` TEXT, `originOrder` INTEGER NOT NULL, PRIMARY KEY(`bookUrl`), FOREIGN KEY(`origin`) REFERENCES `book_sources`(`bookSourceUrl`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "bookUrl", + "columnName": "bookUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "origin", + "columnName": "origin", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "originName", + "columnName": "originName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "author", + "columnName": "author", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "kind", + "columnName": "kind", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "coverUrl", + "columnName": "coverUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "intro", + "columnName": "intro", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "wordCount", + "columnName": "wordCount", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "latestChapterTitle", + "columnName": "latestChapterTitle", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "tocUrl", + "columnName": "tocUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "time", + "columnName": "time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "variable", + "columnName": "variable", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "originOrder", + "columnName": "originOrder", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "bookUrl" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_searchBooks_bookUrl", + "unique": true, + "columnNames": [ + "bookUrl" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_searchBooks_bookUrl` ON `${TABLE_NAME}` (`bookUrl`)" + }, + { + "name": "index_searchBooks_origin", + "unique": false, + "columnNames": [ + "origin" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_searchBooks_origin` ON `${TABLE_NAME}` (`origin`)" + } + ], + "foreignKeys": [ + { + "table": "book_sources", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "origin" + ], + "referencedColumns": [ + "bookSourceUrl" + ] + } + ] + }, + { + "tableName": "search_keywords", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`word` TEXT NOT NULL, `usage` INTEGER NOT NULL, `lastUseTime` INTEGER NOT NULL, PRIMARY KEY(`word`))", + "fields": [ + { + "fieldPath": "word", + "columnName": "word", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "usage", + "columnName": "usage", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lastUseTime", + "columnName": "lastUseTime", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "word" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_search_keywords_word", + "unique": true, + "columnNames": [ + "word" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_search_keywords_word` ON `${TABLE_NAME}` (`word`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "cookies", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`url` TEXT NOT NULL, `cookie` TEXT NOT NULL, PRIMARY KEY(`url`))", + "fields": [ + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cookie", + "columnName": "cookie", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "url" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_cookies_url", + "unique": true, + "columnNames": [ + "url" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_cookies_url` ON `${TABLE_NAME}` (`url`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "rssSources", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`sourceUrl` TEXT NOT NULL, `sourceName` TEXT NOT NULL, `sourceIcon` TEXT NOT NULL, `sourceGroup` TEXT, `sourceComment` TEXT, `enabled` INTEGER NOT NULL, `enabledCookieJar` INTEGER DEFAULT 0, `concurrentRate` TEXT, `header` TEXT, `loginUrl` TEXT, `loginUi` TEXT, `loginCheckJs` TEXT, `sortUrl` TEXT, `singleUrl` INTEGER NOT NULL, `articleStyle` INTEGER NOT NULL, `ruleArticles` TEXT, `ruleNextPage` TEXT, `ruleTitle` TEXT, `rulePubDate` TEXT, `ruleDescription` TEXT, `ruleImage` TEXT, `ruleLink` TEXT, `ruleContent` TEXT, `style` TEXT, `enableJs` INTEGER NOT NULL, `loadWithBaseUrl` INTEGER NOT NULL, `customOrder` INTEGER NOT NULL, PRIMARY KEY(`sourceUrl`))", + "fields": [ + { + "fieldPath": "sourceUrl", + "columnName": "sourceUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sourceName", + "columnName": "sourceName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sourceIcon", + "columnName": "sourceIcon", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sourceGroup", + "columnName": "sourceGroup", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "sourceComment", + "columnName": "sourceComment", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "enabled", + "columnName": "enabled", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "enabledCookieJar", + "columnName": "enabledCookieJar", + "affinity": "INTEGER", + "notNull": false, + "defaultValue": "0" + }, + { + "fieldPath": "concurrentRate", + "columnName": "concurrentRate", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "header", + "columnName": "header", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "loginUrl", + "columnName": "loginUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "loginUi", + "columnName": "loginUi", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "loginCheckJs", + "columnName": "loginCheckJs", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "sortUrl", + "columnName": "sortUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "singleUrl", + "columnName": "singleUrl", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "articleStyle", + "columnName": "articleStyle", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "ruleArticles", + "columnName": "ruleArticles", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleNextPage", + "columnName": "ruleNextPage", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleTitle", + "columnName": "ruleTitle", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "rulePubDate", + "columnName": "rulePubDate", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleDescription", + "columnName": "ruleDescription", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleImage", + "columnName": "ruleImage", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleLink", + "columnName": "ruleLink", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ruleContent", + "columnName": "ruleContent", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "style", + "columnName": "style", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "enableJs", + "columnName": "enableJs", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "loadWithBaseUrl", + "columnName": "loadWithBaseUrl", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "customOrder", + "columnName": "customOrder", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "sourceUrl" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_rssSources_sourceUrl", + "unique": false, + "columnNames": [ + "sourceUrl" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_rssSources_sourceUrl` ON `${TABLE_NAME}` (`sourceUrl`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "bookmarks", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`time` INTEGER NOT NULL, `bookName` TEXT NOT NULL, `bookAuthor` TEXT NOT NULL, `chapterIndex` INTEGER NOT NULL, `chapterPos` INTEGER NOT NULL, `chapterName` TEXT NOT NULL, `bookText` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`time`))", + "fields": [ + { + "fieldPath": "time", + "columnName": "time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "bookName", + "columnName": "bookName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "bookAuthor", + "columnName": "bookAuthor", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "chapterIndex", + "columnName": "chapterIndex", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "chapterPos", + "columnName": "chapterPos", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "chapterName", + "columnName": "chapterName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "bookText", + "columnName": "bookText", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "time" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_bookmarks_bookName_bookAuthor", + "unique": false, + "columnNames": [ + "bookName", + "bookAuthor" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_bookmarks_bookName_bookAuthor` ON `${TABLE_NAME}` (`bookName`, `bookAuthor`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "rssArticles", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`origin` TEXT NOT NULL, `sort` TEXT NOT NULL, `title` TEXT NOT NULL, `order` INTEGER NOT NULL, `link` TEXT NOT NULL, `pubDate` TEXT, `description` TEXT, `content` TEXT, `image` TEXT, `read` INTEGER NOT NULL, `variable` TEXT, PRIMARY KEY(`origin`, `link`))", + "fields": [ + { + "fieldPath": "origin", + "columnName": "origin", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sort", + "columnName": "sort", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "order", + "columnName": "order", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "link", + "columnName": "link", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "pubDate", + "columnName": "pubDate", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "image", + "columnName": "image", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "read", + "columnName": "read", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "variable", + "columnName": "variable", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "origin", + "link" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "rssReadRecords", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`record` TEXT NOT NULL, `read` INTEGER NOT NULL, PRIMARY KEY(`record`))", + "fields": [ + { + "fieldPath": "record", + "columnName": "record", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "read", + "columnName": "read", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "record" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "rssStars", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`origin` TEXT NOT NULL, `sort` TEXT NOT NULL, `title` TEXT NOT NULL, `starTime` INTEGER NOT NULL, `link` TEXT NOT NULL, `pubDate` TEXT, `description` TEXT, `content` TEXT, `image` TEXT, `variable` TEXT, PRIMARY KEY(`origin`, `link`))", + "fields": [ + { + "fieldPath": "origin", + "columnName": "origin", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sort", + "columnName": "sort", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "starTime", + "columnName": "starTime", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "link", + "columnName": "link", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "pubDate", + "columnName": "pubDate", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "image", + "columnName": "image", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "variable", + "columnName": "variable", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "origin", + "link" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "txtTocRules", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `name` TEXT NOT NULL, `rule` TEXT NOT NULL, `serialNumber` INTEGER NOT NULL, `enable` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "rule", + "columnName": "rule", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "serialNumber", + "columnName": "serialNumber", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "enable", + "columnName": "enable", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "readRecord", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`deviceId` TEXT NOT NULL, `bookName` TEXT NOT NULL, `readTime` INTEGER NOT NULL, PRIMARY KEY(`deviceId`, `bookName`))", + "fields": [ + { + "fieldPath": "deviceId", + "columnName": "deviceId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "bookName", + "columnName": "bookName", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "readTime", + "columnName": "readTime", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "deviceId", + "bookName" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "httpTTS", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `name` TEXT NOT NULL, `url` TEXT NOT NULL, `contentType` TEXT, `concurrentRate` TEXT DEFAULT '0', `loginUrl` TEXT, `loginUi` TEXT, `header` TEXT, `enabledCookieJar` INTEGER DEFAULT 0, `loginCheckJs` TEXT, `lastUpdateTime` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "contentType", + "columnName": "contentType", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "concurrentRate", + "columnName": "concurrentRate", + "affinity": "TEXT", + "notNull": false, + "defaultValue": "'0'" + }, + { + "fieldPath": "loginUrl", + "columnName": "loginUrl", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "loginUi", + "columnName": "loginUi", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "header", + "columnName": "header", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "enabledCookieJar", + "columnName": "enabledCookieJar", + "affinity": "INTEGER", + "notNull": false, + "defaultValue": "0" + }, + { + "fieldPath": "loginCheckJs", + "columnName": "loginCheckJs", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lastUpdateTime", + "columnName": "lastUpdateTime", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "caches", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `value` TEXT, `deadline` INTEGER NOT NULL, PRIMARY KEY(`key`))", + "fields": [ + { + "fieldPath": "key", + "columnName": "key", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "value", + "columnName": "value", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "deadline", + "columnName": "deadline", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "key" + ], + "autoGenerate": false + }, + "indices": [ + { + "name": "index_caches_key", + "unique": true, + "columnNames": [ + "key" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_caches_key` ON `${TABLE_NAME}` (`key`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "ruleSubs", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `name` TEXT NOT NULL, `url` TEXT NOT NULL, `type` INTEGER NOT NULL, `customOrder` INTEGER NOT NULL, `autoUpdate` INTEGER NOT NULL, `update` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "customOrder", + "columnName": "customOrder", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "autoUpdate", + "columnName": "autoUpdate", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "update", + "columnName": "update", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "keyboardAssists", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`type` INTEGER NOT NULL DEFAULT 0, `key` TEXT NOT NULL DEFAULT '', `value` TEXT NOT NULL DEFAULT '', `serialNo` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`type`, `key`))", + "fields": [ + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + }, + { + "fieldPath": "key", + "columnName": "key", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "value", + "columnName": "value", + "affinity": "TEXT", + "notNull": true, + "defaultValue": "''" + }, + { + "fieldPath": "serialNo", + "columnName": "serialNo", + "affinity": "INTEGER", + "notNull": true, + "defaultValue": "0" + } + ], + "primaryKey": { + "columnNames": [ + "type", + "key" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '2a6f5ee3d0ed9ac13f15183a04a4af45')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index afe93fb0b..335150091 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + xmlns:tools="http://schemas.android.com/tools" + package="io.legado.app"> diff --git a/app/src/main/assets/help/ruleHelp.md b/app/src/main/assets/help/ruleHelp.md index 938b46bff..9d3c6ade9 100644 --- a/app/src/main/assets/help/ruleHelp.md +++ b/app/src/main/assets/help/ruleHelp.md @@ -10,7 +10,11 @@ @Json: json规则,直接写时以$.开头可省略@Json : regex规则,不可省略,只可以用在书籍列表和目录列表 ``` +* 书源类型: 文件 +> 对于类似知轩藏书提供文件整合下载的网站,可以'在书源详情的下载URL规则获取文件链接,支持多个链接,阅读会自动下载并导入 +* CookieJar +> 启用后会自动保存每次返回头中的Set-Cookie中的值,适用于验证码图片一类需要session的网站 * 登录UI > 不使用内置webView登录网站,需要使用`登录URL`规则实现登录逻辑,可使用`登录检查JS`检查登录结果 ``` diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 857bc1212..1c4b3dbc3 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -11,6 +11,25 @@ * 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。 * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! +**2022/05/16** + +* 添加firebase性能监测 +* 清除cookie时清除webView的cookie + +**2022/05/15** + +* 源编辑添加cookieJar选项 +* 源编辑菜单里添加清除cookie,如果之前能用的书源不能用了,可以关闭cookieJar后点下菜单里的清除cookie后再试 +* 书源支持文件类型 by Xwite +* 启用firebase收集崩溃日志 +* web端阅读实现无限滚动 by Xwite +* 进入阅读界面时如果本地书籍有更新自动刷新目录 + +**2022/05/11** + +* 修复替换报错的bug +* 优化目录界面替换 + **2022/05/10** * 更新cronet: 101.0.4951.61 diff --git a/app/src/main/assets/web/bookSource/index.html b/app/src/main/assets/web/bookSource/index.html index c3b6a4389..c67a810f7 100644 --- a/app/src/main/assets/web/bookSource/index.html +++ b/app/src/main/assets/web/bookSource/index.html @@ -25,7 +25,7 @@
源类型 :
+ placeholder="<必填>0:文本 1:音频 2:图片 3:文件(只提供下载的网站)">
源名称 :
diff --git a/app/src/main/assets/web/bookshelf/css/about.b93f38f9.css b/app/src/main/assets/web/bookshelf/css/about.65a00131.css similarity index 57% rename from app/src/main/assets/web/bookshelf/css/about.b93f38f9.css rename to app/src/main/assets/web/bookshelf/css/about.65a00131.css index 1a21ca315..b8fc8bd59 100644 --- a/app/src/main/assets/web/bookshelf/css/about.b93f38f9.css +++ b/app/src/main/assets/web/bookshelf/css/about.65a00131.css @@ -1 +1 @@ -@charset "UTF-8";@font-face{font-family:FZZCYSK;src:local("☺"),url(../fonts/shelffont.6c094b6d.ttf);font-style:normal;font-weight:400}.index-wrapper[data-v-570ed4a8]{height:100%;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.index-wrapper .navigation-wrapper[data-v-570ed4a8]{width:260px;min-width:260px;padding:48px 36px;background-color:#f7f7f7}.index-wrapper .navigation-wrapper .navigation-title[data-v-570ed4a8]{font-size:24px;font-weight:500;font-family:FZZCYSK}.index-wrapper .navigation-wrapper .navigation-sub-title[data-v-570ed4a8]{font-size:16px;font-weight:300;font-family:FZZCYSK;margin-top:16px;color:#b1b1b1}.index-wrapper .navigation-wrapper .search-wrapper .search-input[data-v-570ed4a8]{border-radius:50%;margin-top:24px}.index-wrapper .navigation-wrapper .search-wrapper .search-input[data-v-570ed4a8] .el-input__inner{border-radius:50px;border-color:#e3e3e3}.index-wrapper .navigation-wrapper .recent-wrapper[data-v-570ed4a8]{margin-top:36px}.index-wrapper .navigation-wrapper .recent-wrapper .recent-title[data-v-570ed4a8]{font-size:14px;color:#b1b1b1;font-family:FZZCYSK}.index-wrapper .navigation-wrapper .recent-wrapper .reading-recent[data-v-570ed4a8]{margin:18px 0}.index-wrapper .navigation-wrapper .recent-wrapper .reading-recent .recent-book[data-v-570ed4a8]{font-size:10px;cursor:pointer}.index-wrapper .navigation-wrapper .setting-wrapper[data-v-570ed4a8]{margin-top:36px}.index-wrapper .navigation-wrapper .setting-wrapper .setting-title[data-v-570ed4a8]{font-size:14px;color:#b1b1b1;font-family:FZZCYSK}.index-wrapper .navigation-wrapper .setting-wrapper .no-point[data-v-570ed4a8]{pointer-events:none}.index-wrapper .navigation-wrapper .setting-wrapper .setting-connect[data-v-570ed4a8]{font-size:8px;margin-top:16px;cursor:pointer}.index-wrapper .navigation-wrapper .bottom-icons[data-v-570ed4a8]{position:fixed;bottom:0;height:120px;width:260px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.index-wrapper .shelf-wrapper[data-v-570ed4a8]{padding:48px 48px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.index-wrapper .shelf-wrapper[data-v-570ed4a8] .el-icon-loading{font-size:36px;color:#b5b5b5}.index-wrapper .shelf-wrapper[data-v-570ed4a8] .el-loading-text{font-weight:500;color:#b5b5b5}.index-wrapper .shelf-wrapper .books-wrapper[data-v-570ed4a8]{overflow:scroll}.index-wrapper .shelf-wrapper .books-wrapper .wrapper[data-v-570ed4a8]{display:grid;grid-template-columns:repeat(auto-fill,380px);-ms-flex-pack:distribute;justify-content:space-around;grid-gap:10px}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book[data-v-570ed4a8]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-bottom:18px;padding:24px 24px;width:360px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .cover-img .cover[data-v-570ed4a8],.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .cover-img[data-v-570ed4a8]{width:84px;height:112px}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info[data-v-570ed4a8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;-webkit-box-align:left;-ms-flex-align:left;align-items:left;height:112px;margin-left:20px;-webkit-box-flex:1;-ms-flex:1;flex:1}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .name[data-v-570ed4a8]{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;font-size:16px;font-weight:700;color:#33373d}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .sub[data-v-570ed4a8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:12px;font-weight:600;color:#6b6b6b}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .sub .dot[data-v-570ed4a8]{margin:0 7px}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .dur-chapter[data-v-570ed4a8],.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .intro[data-v-570ed4a8],.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .last-chapter[data-v-570ed4a8]{color:#969ba3;font-size:13px;margin-top:3px;font-weight:500;word-wrap:break-word;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;text-align:left}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book[data-v-570ed4a8]:hover{background:rgba(0,0,0,.1);-webkit-transition-duration:.5s;transition-duration:.5s}.index-wrapper .shelf-wrapper .books-wrapper .wrapper[data-v-570ed4a8]:last-child{margin-right:auto}.index-wrapper .shelf-wrapper .books-wrapper[data-v-570ed4a8]::-webkit-scrollbar{width:0!important}@media screen and (max-width:750px){.index-wrapper[data-v-570ed4a8]{overflow-x:hidden;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.index-wrapper[data-v-570ed4a8] .navigation-title-wrapper{white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.index-wrapper[data-v-570ed4a8] .bottom-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.index-wrapper[data-v-570ed4a8] .navigation-wrapper{padding:20px 24px;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.index-wrapper[data-v-570ed4a8] .navigation-wrapper .bottom-wrapper .recent-wrapper,.index-wrapper[data-v-570ed4a8] .navigation-wrapper .bottom-wrapper .setting-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.index-wrapper[data-v-570ed4a8] .navigation-wrapper .bottom-icons{display:none}.index-wrapper[data-v-570ed4a8] .shelf-wrapper{padding:0}.index-wrapper[data-v-570ed4a8] .shelf-wrapper .shelf-title{padding:20px 24px 0 24px}.index-wrapper[data-v-570ed4a8] .shelf-wrapper .books-wrapper .wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.index-wrapper[data-v-570ed4a8] .shelf-wrapper .books-wrapper .wrapper .book{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin-bottom:0;padding:10px 20px}} \ No newline at end of file +@charset "UTF-8";@font-face{font-family:FZZCYSK;src:local("☺"),url(../fonts/shelffont.6c094b6d.ttf);font-style:normal;font-weight:400}.index-wrapper[data-v-4587cbc8]{height:100%;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.index-wrapper .navigation-wrapper[data-v-4587cbc8]{width:260px;min-width:260px;padding:48px 36px;background-color:#f7f7f7}.index-wrapper .navigation-wrapper .navigation-title[data-v-4587cbc8]{font-size:24px;font-weight:500;font-family:FZZCYSK}.index-wrapper .navigation-wrapper .navigation-sub-title[data-v-4587cbc8]{font-size:16px;font-weight:300;font-family:FZZCYSK;margin-top:16px;color:#b1b1b1}.index-wrapper .navigation-wrapper .search-wrapper .search-input[data-v-4587cbc8]{border-radius:50%;margin-top:24px}.index-wrapper .navigation-wrapper .search-wrapper .search-input[data-v-4587cbc8] .el-input__inner{border-radius:50px;border-color:#e3e3e3}.index-wrapper .navigation-wrapper .recent-wrapper[data-v-4587cbc8]{margin-top:36px}.index-wrapper .navigation-wrapper .recent-wrapper .recent-title[data-v-4587cbc8]{font-size:14px;color:#b1b1b1;font-family:FZZCYSK}.index-wrapper .navigation-wrapper .recent-wrapper .reading-recent[data-v-4587cbc8]{margin:18px 0}.index-wrapper .navigation-wrapper .recent-wrapper .reading-recent .recent-book[data-v-4587cbc8]{font-size:10px;cursor:pointer}.index-wrapper .navigation-wrapper .setting-wrapper[data-v-4587cbc8]{margin-top:36px}.index-wrapper .navigation-wrapper .setting-wrapper .setting-title[data-v-4587cbc8]{font-size:14px;color:#b1b1b1;font-family:FZZCYSK}.index-wrapper .navigation-wrapper .setting-wrapper .no-point[data-v-4587cbc8]{pointer-events:none}.index-wrapper .navigation-wrapper .setting-wrapper .setting-connect[data-v-4587cbc8]{font-size:8px;margin-top:16px;cursor:pointer}.index-wrapper .navigation-wrapper .bottom-icons[data-v-4587cbc8]{position:fixed;bottom:0;height:120px;width:260px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.index-wrapper .shelf-wrapper[data-v-4587cbc8]{padding:48px 48px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.index-wrapper .shelf-wrapper[data-v-4587cbc8] .el-icon-loading{font-size:36px;color:#b5b5b5}.index-wrapper .shelf-wrapper[data-v-4587cbc8] .el-loading-text{font-weight:500;color:#b5b5b5}.index-wrapper .shelf-wrapper .books-wrapper[data-v-4587cbc8]{overflow:scroll}.index-wrapper .shelf-wrapper .books-wrapper .wrapper[data-v-4587cbc8]{display:grid;grid-template-columns:repeat(auto-fill,380px);-ms-flex-pack:distribute;justify-content:space-around;grid-gap:10px}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book[data-v-4587cbc8]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-bottom:18px;padding:24px 24px;width:360px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .cover-img .cover[data-v-4587cbc8],.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .cover-img[data-v-4587cbc8]{width:84px;height:112px}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info[data-v-4587cbc8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;-webkit-box-align:left;-ms-flex-align:left;align-items:left;height:112px;margin-left:20px;-webkit-box-flex:1;-ms-flex:1;flex:1}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .name[data-v-4587cbc8]{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;font-size:16px;font-weight:700;color:#33373d}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .sub[data-v-4587cbc8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:12px;font-weight:600;color:#6b6b6b}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .sub .dot[data-v-4587cbc8]{margin:0 7px}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .dur-chapter[data-v-4587cbc8],.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .intro[data-v-4587cbc8],.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book .info .last-chapter[data-v-4587cbc8]{color:#969ba3;font-size:13px;margin-top:3px;font-weight:500;word-wrap:break-word;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;text-align:left}.index-wrapper .shelf-wrapper .books-wrapper .wrapper .book[data-v-4587cbc8]:hover{background:rgba(0,0,0,.1);-webkit-transition-duration:.5s;transition-duration:.5s}.index-wrapper .shelf-wrapper .books-wrapper .wrapper[data-v-4587cbc8]:last-child{margin-right:auto}.index-wrapper .shelf-wrapper .books-wrapper[data-v-4587cbc8]::-webkit-scrollbar{width:0!important}@media screen and (max-width:750px){.index-wrapper[data-v-4587cbc8]{overflow-x:hidden;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.index-wrapper[data-v-4587cbc8] .navigation-title-wrapper{white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.index-wrapper[data-v-4587cbc8] .bottom-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.index-wrapper[data-v-4587cbc8] .navigation-wrapper{padding:20px 24px;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.index-wrapper[data-v-4587cbc8] .navigation-wrapper .bottom-wrapper .recent-wrapper,.index-wrapper[data-v-4587cbc8] .navigation-wrapper .bottom-wrapper .setting-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.index-wrapper[data-v-4587cbc8] .navigation-wrapper .bottom-icons{display:none}.index-wrapper[data-v-4587cbc8] .shelf-wrapper{padding:0}.index-wrapper[data-v-4587cbc8] .shelf-wrapper .shelf-title{padding:20px 24px 0 24px}.index-wrapper[data-v-4587cbc8] .shelf-wrapper .books-wrapper .wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.index-wrapper[data-v-4587cbc8] .shelf-wrapper .books-wrapper .wrapper .book{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin-bottom:0;padding:10px 20px}} \ No newline at end of file diff --git a/app/src/main/assets/web/bookshelf/css/detail.7f9a50b2.css b/app/src/main/assets/web/bookshelf/css/detail.12a39aa7.css similarity index 79% rename from app/src/main/assets/web/bookshelf/css/detail.7f9a50b2.css rename to app/src/main/assets/web/bookshelf/css/detail.12a39aa7.css index 36bee7c17..3696608e8 100644 --- a/app/src/main/assets/web/bookshelf/css/detail.7f9a50b2.css +++ b/app/src/main/assets/web/bookshelf/css/detail.12a39aa7.css @@ -1 +1 @@ -@charset "UTF-8";@font-face{font-family:FZZCYSK;src:local("☺"),url(../fonts/popfont.f39ecc1a.ttf);font-style:normal;font-weight:400}.cata-wrapper[data-v-0aacaab8]{margin:-16px;padding:18px 0 24px 25px}.cata-wrapper .title[data-v-0aacaab8]{font-size:18px;font-weight:400;font-family:FZZCYSK;margin:0 0 20px 0;color:#ed4259;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-bottom:1px solid #ed4259}.cata-wrapper .data-wrapper[data-v-0aacaab8]{height:300px;overflow:auto}.cata-wrapper .data-wrapper .cata[data-v-0aacaab8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.cata-wrapper .data-wrapper .cata .selected[data-v-0aacaab8]{color:#eb4259}.cata-wrapper .data-wrapper .cata .log[data-v-0aacaab8]{width:50%;height:40px;cursor:pointer;float:left;font:16px/40px PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,Microsoft YaHei,sans-serif}.cata-wrapper .data-wrapper .cata .log .log-text[data-v-0aacaab8]{margin-right:26px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cata-wrapper .night[data-v-0aacaab8] .log{border-bottom:1px solid #666}.cata-wrapper .day[data-v-0aacaab8] .log{border-bottom:1px solid #f2f2f2}@media screen and (max-width:500px){.cata-wrapper .data-wrapper .cata .log[data-v-0aacaab8]{width:100%}}@font-face{font-family:iconfont;src:url(../fonts/iconfont.f9a3fb0e.woff) format("woff")}[data-v-65e7f0f4] .iconfont,[data-v-65e7f0f4] .moon-icon{font-family:iconfont;font-style:normal}.settings-wrapper[data-v-65e7f0f4]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:-13px;height:300px;text-align:left;padding:40px 0 40px 24px;background:#ede7da url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAD1BMVEX48dr48Nf58tv379X17NJtIBxUAAACFUlEQVQ4y1XRUZakMAgF0Af2AiDWApDZgHZqAV1nZv9rGh7Rj7Y8McUFEg1wvcMESMNVD/neU8Xcaz7nYYkYlYO6Ti82PBI4BvIEg1aj3wKwRvIMgZsUy5LdhCawPFh1sZs4SrlyN9fQKpv8s5dgZ2eLyqqJiu+WkCmUEybXkm3INS01WAiv0PapJ0CZc0SJQUzcWnZYbOOY20iFD8Bk+/j2A3wNxH7GdShFYS5ff237kXh9I9zSkQmIAhOsOSVfJ6DIXTMDaPnzkRJ92S1BQQmXl5LdirgRLLDdcYqcGPwe3QN4xCBiGNbrqq9wpW1XCecChwaQdVOsRDpPCpeoolPdxeXp3WNB9PHVzWBHlygy4NJCCrFHREv6bDt0VGwJZASkpONmm1UseGeFKAQexgaAkrfYWl3AGxWOLL2AIMBNbCXpktmS3k3vHeYjGCPBa43wJTurO3ZFVpQSJdAZGLoHTyk1upkjxMEaIxum3iIARcCa5kSkFAW5fi1mUlL9eyOsaanFmOMruwvEdE3ZYzsRSzo5ewRLXyVPPEvknt8ij4DvCg2O7xOgBCUprEzV4z1WekSpUgI8DT2mrnSOXKRfQavwuKA1F+tFnMKdJSUpMA7wQAifWRkMgjUKKZE4lBl6MCM4B1pq1P4uIjDE6Pq6rL0FnW1nIFmta5vrSvq/Ch4tpqG/ZNyyWa5jZPktq81eYv8Bt5s4iFITOp4AAAAASUVORK5CYII=) repeat}.settings-wrapper .settings-title[data-v-65e7f0f4]{font-size:18px;line-height:22px;margin-bottom:28px;font-family:FZZCYSK;font-weight:400}.settings-wrapper .setting-list ul[data-v-65e7f0f4]{list-style:none outside none;margin:0;padding:0}.settings-wrapper .setting-list ul li[data-v-65e7f0f4]{list-style:none outside none}.settings-wrapper .setting-list ul li i[data-v-65e7f0f4]{font:12px/16px PingFangSC-Regular,-apple-system,Simsun;display:inline-block;min-width:48px;margin-right:16px;vertical-align:middle;color:#666}.settings-wrapper .setting-list ul li .theme-item[data-v-65e7f0f4]{line-height:32px;width:34px;height:34px;margin-right:16px;margin-top:5px;border-radius:100%;display:inline-block;cursor:pointer;text-align:center;vertical-align:middle}.settings-wrapper .setting-list ul li .theme-item .iconfont[data-v-65e7f0f4]{display:none}.settings-wrapper .setting-list ul li .selected[data-v-65e7f0f4]{color:#ed4259}.settings-wrapper .setting-list ul li .selected .iconfont[data-v-65e7f0f4]{display:inline}.settings-wrapper .setting-list ul .font-list[data-v-65e7f0f4]{margin-top:28px}.settings-wrapper .setting-list ul .font-list .font-item[data-v-65e7f0f4]{width:78px;height:34px;cursor:pointer;margin-right:16px;border-radius:2px;text-align:center;vertical-align:middle;display:inline-block;font:14px/34px PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,Microsoft YaHei,sans-serif}.settings-wrapper .setting-list ul .font-list .font-item[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .font-list .selected[data-v-65e7f0f4]{color:#ed4259;border:1px solid #ed4259}.settings-wrapper .setting-list ul .font-size[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width[data-v-65e7f0f4]{margin-top:28px}.settings-wrapper .setting-list ul .font-size .resize[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize[data-v-65e7f0f4]{display:inline-block;width:274px;height:34px;vertical-align:middle;border-radius:2px}.settings-wrapper .setting-list ul .font-size .resize span[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize span[data-v-65e7f0f4]{width:89px;height:34px;line-height:34px;display:inline-block;cursor:pointer;text-align:center;vertical-align:middle}.settings-wrapper .setting-list ul .font-size .resize span em[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize span em[data-v-65e7f0f4]{font-style:normal}.settings-wrapper .setting-list ul .font-size .resize .less[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .font-size .resize .more[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .read-width .resize .less[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .read-width .resize .more[data-v-65e7f0f4]:hover{color:#ed4259}.settings-wrapper .setting-list ul .font-size .resize .lang[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize .lang[data-v-65e7f0f4]{color:#a6a6a6;font-weight:400;font-family:FZZCYSK}.settings-wrapper .setting-list ul .font-size .resize b[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize b[data-v-65e7f0f4]{display:inline-block;height:20px;vertical-align:middle}.night[data-v-65e7f0f4] .selected,.night[data-v-65e7f0f4] .theme-item{border:1px solid #666}.night[data-v-65e7f0f4] .moon-icon{color:#ed4259}.night[data-v-65e7f0f4] .font-list .font-item,.night[data-v-65e7f0f4] .resize{border:1px solid #666;background:rgba(45,45,45,.5)}.night[data-v-65e7f0f4] .resize b{border-right:1px solid #666}.day[data-v-65e7f0f4] .theme-item{border:1px solid #e5e5e5}.day[data-v-65e7f0f4] .selected{border:1px solid #ed4259}.day[data-v-65e7f0f4] .moon-icon{display:inline;color:hsla(0,0%,100%,.2)}.day[data-v-65e7f0f4] .font-list .font-item{background:hsla(0,0%,100%,.5);border:1px solid rgba(0,0,0,.1)}.day[data-v-65e7f0f4] .resize{border:1px solid #e5e5e5;background:hsla(0,0%,100%,.5)}.day[data-v-65e7f0f4] .resize b{border-right:1px solid #e5e5e5}@media screen and (max-width:500px){.settings-wrapper i[data-v-65e7f0f4]{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-bottom:5px!important}}p[data-v-39060afc]{display:block;word-wrap:break-word;word-break:break-all}img[data-v-39060afc]{margin-left:auto;margin-right:auto;display:block;width:100%}[data-v-6f059ee2] .pop-setting{margin-left:68px;top:0}[data-v-6f059ee2] .pop-cata{margin-left:10px}[data-v-6f059ee2] .scroll-container{overflow-y:hidden!important}.chapter-wrapper[data-v-6f059ee2]{padding:0 4%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chapter-wrapper[data-v-6f059ee2] .no-point{pointer-events:none}.chapter-wrapper .tool-bar[data-v-6f059ee2]{position:fixed;top:0;left:50%;z-index:100}.chapter-wrapper .tool-bar .tools[data-v-6f059ee2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chapter-wrapper .tool-bar .tools .tool-icon[data-v-6f059ee2]{font-size:18px;width:58px;height:48px;text-align:center;padding-top:12px;cursor:pointer;outline:none}.chapter-wrapper .tool-bar .tools .tool-icon .iconfont[data-v-6f059ee2]{font-family:iconfont;width:16px;height:16px;font-size:16px;margin:0 auto 6px}.chapter-wrapper .tool-bar .tools .tool-icon .icon-text[data-v-6f059ee2]{font-size:12px}.chapter-wrapper .read-bar[data-v-6f059ee2]{position:fixed;bottom:0;right:50%;z-index:100}.chapter-wrapper .read-bar .tools[data-v-6f059ee2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chapter-wrapper .read-bar .tools .tool-icon[data-v-6f059ee2]{font-size:18px;width:42px;height:31px;padding-top:12px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;outline:none;margin-top:-1px}.chapter-wrapper .read-bar .tools .tool-icon .iconfont[data-v-6f059ee2]{font-family:iconfont;width:16px;height:16px;font-size:16px;margin:0 auto 6px}.chapter-wrapper .chapter-bar .el-breadcrumb .item[data-v-6f059ee2]{font-size:14px;color:#606266}.chapter-wrapper .chapter[data-v-6f059ee2]{font-family:Microsoft YaHei,PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,sans-serif;text-align:left;padding:0 65px;min-height:100vh;width:670px;margin:0 auto}.chapter-wrapper .chapter[data-v-6f059ee2] .el-icon-loading{font-size:36px;color:#b5b5b5}.chapter-wrapper .chapter[data-v-6f059ee2] .el-loading-text{font-weight:500;color:#b5b5b5}.chapter-wrapper .chapter .content[data-v-6f059ee2]{font-size:18px;line-height:1.8;overflow:hidden;font-family:Microsoft YaHei,PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,sans-serif}.chapter-wrapper .chapter .content .title[data-v-6f059ee2]{margin-bottom:57px;font:24px/32px PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,Microsoft YaHei,sans-serif}.chapter-wrapper .chapter .content .bottom-bar[data-v-6f059ee2],.chapter-wrapper .chapter .content .top-bar[data-v-6f059ee2]{height:64px}.day[data-v-6f059ee2] .popup{-webkit-box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04)}.day[data-v-6f059ee2] .tool-icon{border:1px solid rgba(0,0,0,.1);margin-top:-1px;color:#000}.day[data-v-6f059ee2] .tool-icon .icon-text{color:rgba(0,0,0,.4)}.day[data-v-6f059ee2] .chapter{border:1px solid #d8d8d8;color:#262626}.night[data-v-6f059ee2] .popup{-webkit-box-shadow:0 2px 4px rgba(0,0,0,.48),0 0 6px rgba(0,0,0,.16);box-shadow:0 2px 4px rgba(0,0,0,.48),0 0 6px rgba(0,0,0,.16)}.night[data-v-6f059ee2] .tool-icon{border:1px solid #444;margin-top:-1px;color:#666}.night[data-v-6f059ee2] .tool-icon .icon-text{color:#666}.night[data-v-6f059ee2] .chapter{border:1px solid #444;color:#666}.night[data-v-6f059ee2] .popper__arrow{background:#666}@media screen and (max-width:750px){.chapter-wrapper[data-v-6f059ee2]{padding:0}.chapter-wrapper .tool-bar[data-v-6f059ee2]{left:0;width:100vw;margin-left:0!important}.chapter-wrapper .tool-bar .tools[data-v-6f059ee2]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.chapter-wrapper .tool-bar .tools .tool-icon[data-v-6f059ee2]{border:none}.chapter-wrapper .read-bar[data-v-6f059ee2]{right:0;width:100vw;margin-right:0!important}.chapter-wrapper .read-bar .tools[data-v-6f059ee2]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 15px}.chapter-wrapper .read-bar .tools .tool-icon[data-v-6f059ee2]{border:none;width:auto}.chapter-wrapper .read-bar .tools .tool-icon .iconfont[data-v-6f059ee2]{display:inline-block}.chapter-wrapper .chapter[data-v-6f059ee2]{width:100vw!important;padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}} \ No newline at end of file +@charset "UTF-8";@font-face{font-family:FZZCYSK;src:local("☺"),url(../fonts/popfont.f39ecc1a.ttf);font-style:normal;font-weight:400}.cata-wrapper[data-v-0aacaab8]{margin:-16px;padding:18px 0 24px 25px}.cata-wrapper .title[data-v-0aacaab8]{font-size:18px;font-weight:400;font-family:FZZCYSK;margin:0 0 20px 0;color:#ed4259;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-bottom:1px solid #ed4259}.cata-wrapper .data-wrapper[data-v-0aacaab8]{height:300px;overflow:auto}.cata-wrapper .data-wrapper .cata[data-v-0aacaab8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.cata-wrapper .data-wrapper .cata .selected[data-v-0aacaab8]{color:#eb4259}.cata-wrapper .data-wrapper .cata .log[data-v-0aacaab8]{width:50%;height:40px;cursor:pointer;float:left;font:16px/40px PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,Microsoft YaHei,sans-serif}.cata-wrapper .data-wrapper .cata .log .log-text[data-v-0aacaab8]{margin-right:26px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cata-wrapper .night[data-v-0aacaab8] .log{border-bottom:1px solid #666}.cata-wrapper .day[data-v-0aacaab8] .log{border-bottom:1px solid #f2f2f2}@media screen and (max-width:500px){.cata-wrapper .data-wrapper .cata .log[data-v-0aacaab8]{width:100%}}@font-face{font-family:iconfont;src:url(../fonts/iconfont.f9a3fb0e.woff) format("woff")}[data-v-65e7f0f4] .iconfont,[data-v-65e7f0f4] .moon-icon{font-family:iconfont;font-style:normal}.settings-wrapper[data-v-65e7f0f4]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:-13px;height:300px;text-align:left;padding:40px 0 40px 24px;background:#ede7da url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAD1BMVEX48dr48Nf58tv379X17NJtIBxUAAACFUlEQVQ4y1XRUZakMAgF0Af2AiDWApDZgHZqAV1nZv9rGh7Rj7Y8McUFEg1wvcMESMNVD/neU8Xcaz7nYYkYlYO6Ti82PBI4BvIEg1aj3wKwRvIMgZsUy5LdhCawPFh1sZs4SrlyN9fQKpv8s5dgZ2eLyqqJiu+WkCmUEybXkm3INS01WAiv0PapJ0CZc0SJQUzcWnZYbOOY20iFD8Bk+/j2A3wNxH7GdShFYS5ff237kXh9I9zSkQmIAhOsOSVfJ6DIXTMDaPnzkRJ92S1BQQmXl5LdirgRLLDdcYqcGPwe3QN4xCBiGNbrqq9wpW1XCecChwaQdVOsRDpPCpeoolPdxeXp3WNB9PHVzWBHlygy4NJCCrFHREv6bDt0VGwJZASkpONmm1UseGeFKAQexgaAkrfYWl3AGxWOLL2AIMBNbCXpktmS3k3vHeYjGCPBa43wJTurO3ZFVpQSJdAZGLoHTyk1upkjxMEaIxum3iIARcCa5kSkFAW5fi1mUlL9eyOsaanFmOMruwvEdE3ZYzsRSzo5ewRLXyVPPEvknt8ij4DvCg2O7xOgBCUprEzV4z1WekSpUgI8DT2mrnSOXKRfQavwuKA1F+tFnMKdJSUpMA7wQAifWRkMgjUKKZE4lBl6MCM4B1pq1P4uIjDE6Pq6rL0FnW1nIFmta5vrSvq/Ch4tpqG/ZNyyWa5jZPktq81eYv8Bt5s4iFITOp4AAAAASUVORK5CYII=) repeat}.settings-wrapper .settings-title[data-v-65e7f0f4]{font-size:18px;line-height:22px;margin-bottom:28px;font-family:FZZCYSK;font-weight:400}.settings-wrapper .setting-list ul[data-v-65e7f0f4]{list-style:none outside none;margin:0;padding:0}.settings-wrapper .setting-list ul li[data-v-65e7f0f4]{list-style:none outside none}.settings-wrapper .setting-list ul li i[data-v-65e7f0f4]{font:12px/16px PingFangSC-Regular,-apple-system,Simsun;display:inline-block;min-width:48px;margin-right:16px;vertical-align:middle;color:#666}.settings-wrapper .setting-list ul li .theme-item[data-v-65e7f0f4]{line-height:32px;width:34px;height:34px;margin-right:16px;margin-top:5px;border-radius:100%;display:inline-block;cursor:pointer;text-align:center;vertical-align:middle}.settings-wrapper .setting-list ul li .theme-item .iconfont[data-v-65e7f0f4]{display:none}.settings-wrapper .setting-list ul li .selected[data-v-65e7f0f4]{color:#ed4259}.settings-wrapper .setting-list ul li .selected .iconfont[data-v-65e7f0f4]{display:inline}.settings-wrapper .setting-list ul .font-list[data-v-65e7f0f4]{margin-top:28px}.settings-wrapper .setting-list ul .font-list .font-item[data-v-65e7f0f4]{width:78px;height:34px;cursor:pointer;margin-right:16px;border-radius:2px;text-align:center;vertical-align:middle;display:inline-block;font:14px/34px PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,Microsoft YaHei,sans-serif}.settings-wrapper .setting-list ul .font-list .font-item[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .font-list .selected[data-v-65e7f0f4]{color:#ed4259;border:1px solid #ed4259}.settings-wrapper .setting-list ul .font-size[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width[data-v-65e7f0f4]{margin-top:28px}.settings-wrapper .setting-list ul .font-size .resize[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize[data-v-65e7f0f4]{display:inline-block;width:274px;height:34px;vertical-align:middle;border-radius:2px}.settings-wrapper .setting-list ul .font-size .resize span[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize span[data-v-65e7f0f4]{width:89px;height:34px;line-height:34px;display:inline-block;cursor:pointer;text-align:center;vertical-align:middle}.settings-wrapper .setting-list ul .font-size .resize span em[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize span em[data-v-65e7f0f4]{font-style:normal}.settings-wrapper .setting-list ul .font-size .resize .less[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .font-size .resize .more[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .read-width .resize .less[data-v-65e7f0f4]:hover,.settings-wrapper .setting-list ul .read-width .resize .more[data-v-65e7f0f4]:hover{color:#ed4259}.settings-wrapper .setting-list ul .font-size .resize .lang[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize .lang[data-v-65e7f0f4]{color:#a6a6a6;font-weight:400;font-family:FZZCYSK}.settings-wrapper .setting-list ul .font-size .resize b[data-v-65e7f0f4],.settings-wrapper .setting-list ul .read-width .resize b[data-v-65e7f0f4]{display:inline-block;height:20px;vertical-align:middle}.night[data-v-65e7f0f4] .selected,.night[data-v-65e7f0f4] .theme-item{border:1px solid #666}.night[data-v-65e7f0f4] .moon-icon{color:#ed4259}.night[data-v-65e7f0f4] .font-list .font-item,.night[data-v-65e7f0f4] .resize{border:1px solid #666;background:rgba(45,45,45,.5)}.night[data-v-65e7f0f4] .resize b{border-right:1px solid #666}.day[data-v-65e7f0f4] .theme-item{border:1px solid #e5e5e5}.day[data-v-65e7f0f4] .selected{border:1px solid #ed4259}.day[data-v-65e7f0f4] .moon-icon{display:inline;color:hsla(0,0%,100%,.2)}.day[data-v-65e7f0f4] .font-list .font-item{background:hsla(0,0%,100%,.5);border:1px solid rgba(0,0,0,.1)}.day[data-v-65e7f0f4] .resize{border:1px solid #e5e5e5;background:hsla(0,0%,100%,.5)}.day[data-v-65e7f0f4] .resize b{border-right:1px solid #e5e5e5}@media screen and (max-width:500px){.settings-wrapper i[data-v-65e7f0f4]{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-bottom:5px!important}}p[data-v-39060afc]{display:block;word-wrap:break-word;word-break:break-all}img[data-v-39060afc]{margin-left:auto;margin-right:auto;display:block;width:100%}[data-v-8cacf902] .pop-setting{margin-left:68px;top:0}[data-v-8cacf902] .pop-cata{margin-left:10px}[data-v-8cacf902] .scroll-container{overflow-y:hidden!important}.chapter-wrapper[data-v-8cacf902]{padding:0 4%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chapter-wrapper[data-v-8cacf902] .no-point{pointer-events:none}.chapter-wrapper .tool-bar[data-v-8cacf902]{position:fixed;top:0;left:50%;z-index:100}.chapter-wrapper .tool-bar .tools[data-v-8cacf902]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chapter-wrapper .tool-bar .tools .tool-icon[data-v-8cacf902]{font-size:18px;width:58px;height:48px;text-align:center;padding-top:12px;cursor:pointer;outline:none}.chapter-wrapper .tool-bar .tools .tool-icon .iconfont[data-v-8cacf902]{font-family:iconfont;width:16px;height:16px;font-size:16px;margin:0 auto 6px}.chapter-wrapper .tool-bar .tools .tool-icon .icon-text[data-v-8cacf902]{font-size:12px}.chapter-wrapper .read-bar[data-v-8cacf902]{position:fixed;bottom:0;right:50%;z-index:100}.chapter-wrapper .read-bar .tools[data-v-8cacf902]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chapter-wrapper .read-bar .tools .tool-icon[data-v-8cacf902]{font-size:18px;width:42px;height:31px;padding-top:12px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;outline:none;margin-top:-1px}.chapter-wrapper .read-bar .tools .tool-icon .iconfont[data-v-8cacf902]{font-family:iconfont;width:16px;height:16px;font-size:16px;margin:0 auto 6px}.chapter-wrapper .chapter-bar .el-breadcrumb .item[data-v-8cacf902]{font-size:14px;color:#606266}.chapter-wrapper .chapter[data-v-8cacf902]{font-family:Microsoft YaHei,PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,sans-serif;text-align:left;padding:0 65px;min-height:100vh;width:670px;margin:0 auto}.chapter-wrapper .chapter[data-v-8cacf902] .el-icon-loading{font-size:36px;color:#b5b5b5}.chapter-wrapper .chapter[data-v-8cacf902] .el-loading-text{font-weight:500;color:#b5b5b5}.chapter-wrapper .chapter .content[data-v-8cacf902]{font-size:18px;line-height:1.8;overflow:hidden;font-family:Microsoft YaHei,PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,sans-serif}.chapter-wrapper .chapter .content .title[data-v-8cacf902]{margin-bottom:57px;font:24px/32px PingFangSC-Regular,HelveticaNeue-Light,Helvetica Neue Light,Microsoft YaHei,sans-serif}.chapter-wrapper .chapter .content .bottom-bar[data-v-8cacf902],.chapter-wrapper .chapter .content .top-bar[data-v-8cacf902]{height:64px}.day[data-v-8cacf902] .popup{-webkit-box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04)}.day[data-v-8cacf902] .tool-icon{border:1px solid rgba(0,0,0,.1);margin-top:-1px;color:#000}.day[data-v-8cacf902] .tool-icon .icon-text{color:rgba(0,0,0,.4)}.day[data-v-8cacf902] .chapter{border:1px solid #d8d8d8;color:#262626}.night[data-v-8cacf902] .popup{-webkit-box-shadow:0 2px 4px rgba(0,0,0,.48),0 0 6px rgba(0,0,0,.16);box-shadow:0 2px 4px rgba(0,0,0,.48),0 0 6px rgba(0,0,0,.16)}.night[data-v-8cacf902] .tool-icon{border:1px solid #444;margin-top:-1px;color:#666}.night[data-v-8cacf902] .tool-icon .icon-text{color:#666}.night[data-v-8cacf902] .chapter{border:1px solid #444;color:#666}.night[data-v-8cacf902] .popper__arrow{background:#666}@media screen and (max-width:750px){.chapter-wrapper[data-v-8cacf902]{padding:0}.chapter-wrapper .tool-bar[data-v-8cacf902]{left:0;width:100vw;margin-left:0!important}.chapter-wrapper .tool-bar .tools[data-v-8cacf902]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.chapter-wrapper .tool-bar .tools .tool-icon[data-v-8cacf902]{border:none}.chapter-wrapper .read-bar[data-v-8cacf902]{right:0;width:100vw;margin-right:0!important}.chapter-wrapper .read-bar .tools[data-v-8cacf902]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 15px}.chapter-wrapper .read-bar .tools .tool-icon[data-v-8cacf902]{border:none;width:auto}.chapter-wrapper .read-bar .tools .tool-icon .iconfont[data-v-8cacf902]{display:inline-block}.chapter-wrapper .chapter[data-v-8cacf902]{width:100vw!important;padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}} \ No newline at end of file diff --git a/app/src/main/assets/web/bookshelf/index.html b/app/src/main/assets/web/bookshelf/index.html index 842ca40da..0565fef12 100644 --- a/app/src/main/assets/web/bookshelf/index.html +++ b/app/src/main/assets/web/bookshelf/index.html @@ -1,3 +1,3 @@ -Legado Bookshelf
\ No newline at end of file + }
\ No newline at end of file diff --git a/app/src/main/assets/web/bookshelf/js/about.2456ab2e.js b/app/src/main/assets/web/bookshelf/js/about.2456ab2e.js new file mode 100644 index 000000000..7931201e7 --- /dev/null +++ b/app/src/main/assets/web/bookshelf/js/about.2456ab2e.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{"04d1":function(t,e,r){var n=r("342f"),a=n.match(/firefox\/(\d+)/i);t.exports=!!a&&+a[1]},"0cb2":function(t,e,r){var n=r("e330"),a=r("7b0b"),i=Math.floor,o=n("".charAt),s=n("".replace),c=n("".slice),u=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,l=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,r,n,d,f){var v=r+t.length,h=n.length,p=l;return void 0!==d&&(d=a(d),p=u),s(f,p,(function(a,s){var u;switch(o(s,0)){case"$":return"$";case"&":return t;case"`":return c(e,0,r);case"'":return c(e,v);case"<":u=d[c(s,1,-1)];break;default:var l=+s;if(0===l)return a;if(l>h){var f=i(l/10);return 0===f?a:f<=h?void 0===n[f-1]?o(s,1):n[f-1]+o(s,1):a}u=n[l-1]}return void 0===u?"":u}))}},"14c3":function(t,e,r){var n=r("da84"),a=r("c65b"),i=r("825a"),o=r("1626"),s=r("c6b6"),c=r("9263"),u=n.TypeError;t.exports=function(t,e){var r=t.exec;if(o(r)){var n=a(r,t,e);return null!==n&&i(n),n}if("RegExp"===s(t))return a(c,t,e);throw u("RegExp#exec called on incompatible receiver")}},"2c3e":function(t,e,r){var n=r("da84"),a=r("83ab"),i=r("9f7f").MISSED_STICKY,o=r("c6b6"),s=r("edd0"),c=r("69f3").get,u=RegExp.prototype,l=n.TypeError;a&&i&&s(u,"sticky",{configurable:!0,get:function(){if(this!==u){if("RegExp"===o(this))return!!c(this).sticky;throw l("Incompatible receiver, RegExp required")}}})},"44e7":function(t,e,r){var n=r("861d"),a=r("c6b6"),i=r("b622"),o=i("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==a(t))}},"4d63":function(t,e,r){var n=r("83ab"),a=r("da84"),i=r("e330"),o=r("94ca"),s=r("7156"),c=r("9112"),u=r("241c").f,l=r("3a9b"),d=r("44e7"),f=r("577e"),v=r("90d8"),h=r("9f7f"),p=r("aeb0"),g=r("cb2d"),b=r("d039"),m=r("1a2d"),x=r("69f3").enforce,w=r("2626"),C=r("b622"),A=r("fce3"),y=r("107c"),R=C("match"),I=a.RegExp,E=I.prototype,k=a.SyntaxError,M=i(E.exec),S=i("".charAt),D=i("".replace),T=i("".indexOf),$=i("".slice),B=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,_=/a/g,z=/a/g,F=new I(_)!==_,J=h.MISSED_STICKY,N=h.UNSUPPORTED_Y,O=n&&(!F||J||A||y||b((function(){return z[R]=!1,I(_)!=_||I(z)==z||"/a/i"!=I(_,"i")}))),P=function(t){for(var e,r=t.length,n=0,a="",i=!1;n<=r;n++)e=S(t,n),"\\"!==e?i||"."!==e?("["===e?i=!0:"]"===e&&(i=!1),a+=e):a+="[\\s\\S]":a+=e+S(t,++n);return a},W=function(t){for(var e,r=t.length,n=0,a="",i=[],o={},s=!1,c=!1,u=0,l="";n<=r;n++){if(e=S(t,n),"\\"===e)e+=S(t,++n);else if("]"===e)s=!1;else if(!s)switch(!0){case"["===e:s=!0;break;case"("===e:M(B,$(t,n+1))&&(n+=2,c=!0),a+=e,u++;continue;case">"===e&&c:if(""===l||m(o,l))throw new k("Invalid capture group name");o[l]=!0,i[i.length]=[l,u],c=!1,l="";continue}c?l+=e:a+=e}return[a,i]};if(o("RegExp",O)){for(var H=function(t,e){var r,n,a,i,o,u,h=l(E,this),p=d(t),g=void 0===e,b=[],m=t;if(!h&&p&&g&&t.constructor===H)return t;if((p||l(E,t))&&(t=t.source,g&&(e=v(m))),t=void 0===t?"":f(t),e=void 0===e?"":f(e),m=t,A&&"dotAll"in _&&(n=!!e&&T(e,"s")>-1,n&&(e=D(e,/s/g,""))),r=e,J&&"sticky"in _&&(a=!!e&&T(e,"y")>-1,a&&N&&(e=D(e,/y/g,""))),y&&(i=W(t),t=i[0],b=i[1]),o=s(I(t,e),h?this:E,H),(n||a||b.length)&&(u=x(o),n&&(u.dotAll=!0,u.raw=H(P(t),r)),a&&(u.sticky=!0),b.length&&(u.groups=b)),t!==m)try{c(o,"source",""===m?"(?:)":m)}catch(w){}return o},U=u(I),Y=0;U.length>Y;)p(H,I,U[Y++]);E.constructor=H,H.prototype=E,g(a,"RegExp",H,{constructor:!0})}w("RegExp")},"4dae":function(t,e,r){var n=r("da84"),a=r("23cb"),i=r("07fa"),o=r("8418"),s=n.Array,c=Math.max;t.exports=function(t,e,r){for(var n=i(t),u=a(e,n),l=a(void 0===r?n:r,n),d=s(c(l-u,0)),f=0;u3)){if(v)return!0;if(p)return p<603;var t,e,r,n,a="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)g.push({k:e+n,v:r})}for(g.sort((function(t,e){return e.v-t.v})),n=0;nc(r)?1:-1}};n({target:"Array",proto:!0,forced:y},{sort:function(t){void 0!==t&&i(t);var e=o(this);if(A)return void 0===t?b(e):b(e,t);var r,n,a=[],c=s(e);for(n=0;n")}));o("replace",(function(t,e,r){var i=M?"$":"$0";return[function(t,r){var n=v(this),i=void 0==t?void 0:p(t,x);return i?a(i,t,n,r):a(e,f(n),t,r)},function(t,a){var o=c(this),s=f(t);if("string"==typeof a&&-1===R(a,i)&&-1===R(a,"$<")){var v=r(e,o,s,a);if(v.done)return v.value}var p=u(a);p||(a=f(a));var m=o.global;if(m){var x=o.unicode;o.lastIndex=0}var k=[];while(1){var M=b(o,s);if(null===M)break;if(y(k,M),!m)break;var S=f(M[0]);""===S&&(o.lastIndex=h(s,d(o.lastIndex),x))}for(var D="",T=0,$=0;$=T&&(D+=I(s,T,_)+O,T=_+B.length)}return D+I(s,T)}]}),!S||!k||M)},7156:function(t,e,r){var n=r("1626"),a=r("861d"),i=r("d2bb");t.exports=function(t,e,r){var o,s;return i&&n(o=e.constructor)&&o!==r&&a(s=o.prototype)&&s!==r.prototype&&i(t,s),t}},"76ef":function(t,e,r){},"7b5b":function(t,e,r){},"8aa5":function(t,e,r){"use strict";var n=r("6547").charAt;t.exports=function(t,e,r){return e+(r?n(t,e).length:1)}},a06b:function(t,e,r){"use strict";r("76ef")},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){return 1},1)}))}},addb:function(t,e,r){var n=r("4dae"),a=Math.floor,i=function(t,e){var r=t.length,c=a(r/2);return r<8?o(t,e):s(t,i(n(t,0,c),e),i(n(t,c),e),e)},o=function(t,e){var r,n,a=t.length,i=1;while(i0)t[n]=t[--n];n!==i++&&(t[n]=r)}return t},s=function(t,e,r,n){var a=e.length,i=r.length,o=0,s=0;while(o]*>)/g,l=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,r,n,d,f){var v=r+t.length,p=n.length,g=l;return void 0!==d&&(d=a(d),g=u),s(f,g,(function(a,s){var u;switch(o(s,0)){case"$":return"$";case"&":return t;case"`":return c(e,0,r);case"'":return c(e,v);case"<":u=d[c(s,1,-1)];break;default:var l=+s;if(0===l)return a;if(l>p){var f=i(l/10);return 0===f?a:f<=p?void 0===n[f-1]?o(s,1):n[f-1]+o(s,1):a}u=n[l-1]}return void 0===u?"":u}))}},"14c3":function(t,e,r){var n=r("da84"),a=r("c65b"),i=r("825a"),o=r("1626"),s=r("c6b6"),c=r("9263"),u=n.TypeError;t.exports=function(t,e){var r=t.exec;if(o(r)){var n=a(r,t,e);return null!==n&&i(n),n}if("RegExp"===s(t))return a(c,t,e);throw u("RegExp#exec called on incompatible receiver")}},"2c3e":function(t,e,r){var n=r("da84"),a=r("83ab"),i=r("9f7f").MISSED_STICKY,o=r("c6b6"),s=r("edd0"),c=r("69f3").get,u=RegExp.prototype,l=n.TypeError;a&&i&&s(u,"sticky",{configurable:!0,get:function(){if(this!==u){if("RegExp"===o(this))return!!c(this).sticky;throw l("Incompatible receiver, RegExp required")}}})},"44e7":function(t,e,r){var n=r("861d"),a=r("c6b6"),i=r("b622"),o=i("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==a(t))}},"4d63":function(t,e,r){var n=r("83ab"),a=r("da84"),i=r("e330"),o=r("94ca"),s=r("7156"),c=r("9112"),u=r("241c").f,l=r("3a9b"),d=r("44e7"),f=r("577e"),v=r("90d8"),p=r("9f7f"),g=r("aeb0"),h=r("cb2d"),m=r("d039"),b=r("1a2d"),x=r("69f3").enforce,w=r("2626"),C=r("b622"),y=r("fce3"),A=r("107c"),R=C("match"),I=a.RegExp,E=I.prototype,k=a.SyntaxError,M=i(E.exec),S=i("".charAt),D=i("".replace),T=i("".indexOf),$=i("".slice),B=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,_=/a/g,z=/a/g,F=new I(_)!==_,J=p.MISSED_STICKY,N=p.UNSUPPORTED_Y,O=n&&(!F||J||y||A||m((function(){return z[R]=!1,I(_)!=_||I(z)==z||"/a/i"!=I(_,"i")}))),P=function(t){for(var e,r=t.length,n=0,a="",i=!1;n<=r;n++)e=S(t,n),"\\"!==e?i||"."!==e?("["===e?i=!0:"]"===e&&(i=!1),a+=e):a+="[\\s\\S]":a+=e+S(t,++n);return a},W=function(t){for(var e,r=t.length,n=0,a="",i=[],o={},s=!1,c=!1,u=0,l="";n<=r;n++){if(e=S(t,n),"\\"===e)e+=S(t,++n);else if("]"===e)s=!1;else if(!s)switch(!0){case"["===e:s=!0;break;case"("===e:M(B,$(t,n+1))&&(n+=2,c=!0),a+=e,u++;continue;case">"===e&&c:if(""===l||b(o,l))throw new k("Invalid capture group name");o[l]=!0,i[i.length]=[l,u],c=!1,l="";continue}c?l+=e:a+=e}return[a,i]};if(o("RegExp",O)){for(var H=function(t,e){var r,n,a,i,o,u,p=l(E,this),g=d(t),h=void 0===e,m=[],b=t;if(!p&&g&&h&&t.constructor===H)return t;if((g||l(E,t))&&(t=t.source,h&&(e=v(b))),t=void 0===t?"":f(t),e=void 0===e?"":f(e),b=t,y&&"dotAll"in _&&(n=!!e&&T(e,"s")>-1,n&&(e=D(e,/s/g,""))),r=e,J&&"sticky"in _&&(a=!!e&&T(e,"y")>-1,a&&N&&(e=D(e,/y/g,""))),A&&(i=W(t),t=i[0],m=i[1]),o=s(I(t,e),p?this:E,H),(n||a||m.length)&&(u=x(o),n&&(u.dotAll=!0,u.raw=H(P(t),r)),a&&(u.sticky=!0),m.length&&(u.groups=m)),t!==b)try{c(o,"source",""===b?"(?:)":b)}catch(w){}return o},U=u(I),Y=0;U.length>Y;)g(H,I,U[Y++]);E.constructor=H,H.prototype=E,h(a,"RegExp",H)}w("RegExp")},"4dae":function(t,e,r){var n=r("da84"),a=r("23cb"),i=r("07fa"),o=r("8418"),s=n.Array,c=Math.max;t.exports=function(t,e,r){for(var n=i(t),u=a(e,n),l=a(void 0===r?n:r,n),d=s(c(l-u,0)),f=0;u3)){if(v)return!0;if(g)return g<603;var t,e,r,n,a="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)h.push({k:e+n,v:r})}for(h.sort((function(t,e){return e.v-t.v})),n=0;nc(r)?1:-1}};n({target:"Array",proto:!0,forced:A},{sort:function(t){void 0!==t&&i(t);var e=o(this);if(y)return void 0===t?m(e):m(e,t);var r,n,a=[],c=s(e);for(n=0;n")}));o("replace",(function(t,e,r){var i=M?"$":"$0";return[function(t,r){var n=v(this),i=void 0==t?void 0:g(t,x);return i?a(i,t,n,r):a(e,f(n),t,r)},function(t,a){var o=c(this),s=f(t);if("string"==typeof a&&-1===R(a,i)&&-1===R(a,"$<")){var v=r(e,o,s,a);if(v.done)return v.value}var g=u(a);g||(a=f(a));var b=o.global;if(b){var x=o.unicode;o.lastIndex=0}var k=[];while(1){var M=m(o,s);if(null===M)break;if(A(k,M),!b)break;var S=f(M[0]);""===S&&(o.lastIndex=p(s,d(o.lastIndex),x))}for(var D="",T=0,$=0;$=T&&(D+=I(s,T,_)+O,T=_+B.length)}return D+I(s,T)}]}),!S||!k||M)},7156:function(t,e,r){var n=r("1626"),a=r("861d"),i=r("d2bb");t.exports=function(t,e,r){var o,s;return i&&n(o=e.constructor)&&o!==r&&a(s=o.prototype)&&s!==r.prototype&&i(t,s),t}},"7b5b":function(t,e,r){},"8aa5":function(t,e,r){"use strict";var n=r("6547").charAt;t.exports=function(t,e,r){return e+(r?n(t,e).length:1)}},"94a7":function(t,e,r){"use strict";r("9c0e")},"9c0e":function(t,e,r){},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){return 1},1)}))}},addb:function(t,e,r){var n=r("4dae"),a=Math.floor,i=function(t,e){var r=t.length,c=a(r/2);return r<8?o(t,e):s(t,i(n(t,0,c),e),i(n(t,c),e),e)},o=function(t,e){var r,n,a=t.length,i=1;while(i0)t[n]=t[--n];n!==i++&&(t[n]=r)}return t},s=function(t,e,r,n){var a=e.length,i=r.length,o=0,s=0;while(o>>32-t}function r(e,t){var n,r,o,a,i;return o=2147483648&e,a=2147483648&t,n=1073741824&e,r=1073741824&t,i=(1073741823&e)+(1073741823&t),n&r?2147483648^i^o^a:n|r?1073741824&i?3221225472^i^o^a:1073741824^i^o^a:i^o^a}function o(e,t,n){return e&t|~e&n}function a(e,t,n){return e&n|t&~n}function i(e,t,n){return e^t^n}function u(e,t,n){return t^(e|~n)}function c(e,t,a,i,u,c,f){return e=r(e,r(r(o(t,a,i),u),f)),r(n(e,c),t)}function f(e,t,o,i,u,c,f){return e=r(e,r(r(a(t,o,i),u),f)),r(n(e,c),t)}function s(e,t,o,a,u,c,f){return e=r(e,r(r(i(t,o,a),u),f)),r(n(e,c),t)}function l(e,t,o,a,i,c,f){return e=r(e,r(r(u(t,o,a),i),f)),r(n(e,c),t)}function d(e){var t,n=e.length,r=n+8,o=(r-r%64)/64,a=16*(o+1),i=Array(a-1),u=0,c=0;while(c>>29,i}function p(e){var t,n,r="",o="";for(n=0;n<=3;n++)t=e>>>8*n&255,o="0"+t.toString(16),r+=o.substr(o.length-2,2);return r}var h,g,b,m,v,y,w,C,S,O=Array(),j=7,k=12,x=17,P=22,T=5,_=9,E=14,L=20,$=4,A=11,I=16,M=23,B=6,N=10,R=15,V=21;for(O=d(t),y=1732584193,w=4023233417,C=2562383102,S=271733878,h=0;h>>32-t}function r(e,t){var n,r,o,a,i;return o=2147483648&e,a=2147483648&t,n=1073741824&e,r=1073741824&t,i=(1073741823&e)+(1073741823&t),n&r?2147483648^i^o^a:n|r?1073741824&i?3221225472^i^o^a:1073741824^i^o^a:i^o^a}function o(e,t,n){return e&t|~e&n}function a(e,t,n){return e&n|t&~n}function i(e,t,n){return e^t^n}function u(e,t,n){return t^(e|~n)}function c(e,t,a,i,u,c,f){return e=r(e,r(r(o(t,a,i),u),f)),r(n(e,c),t)}function f(e,t,o,i,u,c,f){return e=r(e,r(r(a(t,o,i),u),f)),r(n(e,c),t)}function s(e,t,o,a,u,c,f){return e=r(e,r(r(i(t,o,a),u),f)),r(n(e,c),t)}function l(e,t,o,a,i,c,f){return e=r(e,r(r(u(t,o,a),i),f)),r(n(e,c),t)}function d(e){var t,n=e.length,r=n+8,o=(r-r%64)/64,a=16*(o+1),i=Array(a-1),u=0,c=0;while(c>>29,i}function p(e){var t,n,r="",o="";for(n=0;n<=3;n++)t=e>>>8*n&255,o="0"+t.toString(16),r+=o.substr(o.length-2,2);return r}var h,g,b,m,v,y,w,C,S,O=Array(),j=7,k=12,x=17,P=22,T=5,_=9,E=14,L=20,$=4,A=11,I=16,M=23,B=6,N=10,R=15,V=21;for(O=d(t),y=1732584193,w=4023233417,C=2562383102,S=271733878,h=0;hb)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},"10cb":function(e,t,n){},"13d2":function(e,t,n){var r=n("d039"),o=n("1626"),i=n("1a2d"),a=n("9bf2").f,s=n("5e77").CONFIGURABLE,l=n("8925"),u=n("69f3"),c=u.enforce,f=u.get,d=!r((function(){return 8!==a((function(){}),"length",{value:8}).length})),p=String(String).split("String"),h=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!i(e,"name")||s&&e.name!==t)&&a(e,"name",{value:t,configurable:!0}),d&&n&&i(n,"arity")&&e.length!==n.arity&&a(e,"length",{value:n.arity});var r=c(e);return i(r,"source")||(r.source=p.join("string"==typeof t?t:"")),e};Function.prototype.toString=h((function(){return o(this)&&f(this).source||l(this)}),"toString")},"14e5":function(e,t,n){"use strict";var r=n("23e7"),o=n("c65b"),i=n("59ed"),a=n("f069"),s=n("e667"),l=n("2266"),u=n("5eed");r({target:"Promise",stat:!0,forced:u},{all:function(e){var t=this,n=a.f(t),r=n.resolve,u=n.reject,c=s((function(){var n=i(t.resolve),a=[],s=0,c=1;l(e,(function(e){var i=s++,l=!1;c++,o(n,t,e).then((function(e){l||(l=!0,a[i]=e,--c||r(a))}),u)})),--c||r(a)}));return c.error&&u(c.value),n.promise}})},"14e9":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=131)}({131:function(e,t,n){"use strict";n.r(t);var r=n(16),o=n(38),i=n.n(o),a=n(3),s=n(2),l={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function u(e){var t=e.move,n=e.size,r=e.bar,o={},i="translate"+r.axis+"("+t+"%)";return o[r.size]=n,o.transform=i,o.msTransform=i,o.webkitTransform=i,o}var c={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return l[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,n=this.move,r=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+r.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:u({size:t,move:n,bar:r})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),n=this.$refs.thumb[this.bar.offset]/2,r=100*(t-n)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=r*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(s["on"])(document,"mousemove",this.mouseMoveDocumentHandler),Object(s["on"])(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var n=-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),r=this.$refs.thumb[this.bar.offset]-t,o=100*(n-r)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=o*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(s["off"])(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(s["off"])(document,"mouseup",this.mouseUpDocumentHandler)}},f={name:"ElScrollbar",components:{Bar:c},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=i()(),n=this.wrapStyle;if(t){var r="-"+t+"px",o="margin-bottom: "+r+"; margin-right: "+r+";";Array.isArray(this.wrapStyle)?(n=Object(a["toObject"])(this.wrapStyle),n.marginRight=n.marginBottom=r):"string"===typeof this.wrapStyle?n+=o:n=o}var s=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),l=e("div",{ref:"wrap",style:n,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[s]]),u=void 0;return u=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:n},[[s]])]:[l,e(c,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(c,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},u)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e=void 0,t=void 0,n=this.wrap;n&&(e=100*n.clientHeight/n.scrollHeight,t=100*n.clientWidth/n.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(r["addResizeListener"])(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(r["removeResizeListener"])(this.$refs.resize,this.update)},install:function(e){e.component(f.name,f)}};t["default"]=f},16:function(e,t){e.exports=n("4010")},2:function(e,t){e.exports=n("5924")},3:function(e,t){e.exports=n("8122")},38:function(e,t){e.exports=n("e62d")}})},1626:function(e,t){e.exports=function(e){return"function"==typeof e}},1951:function(e,t,n){},"19aa":function(e,t,n){var r=n("da84"),o=n("3a9b"),i=r.TypeError;e.exports=function(e,t){if(o(t,e))return e;throw i("Incorrect invocation")}},"1a2d":function(e,t,n){var r=n("e330"),o=n("7b0b"),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},"1be4":function(e,t,n){var r=n("d066");e.exports=r("document","documentElement")},"1c7e":function(e,t,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,s={next:function(){return{done:!!a++}},return:function(){i=!0}};s[o]=function(){return this},Array.from(s,(function(){throw 2}))}catch(l){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(l){}return n}},"1cdc":function(e,t,n){var r=n("342f");e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},"1d2b":function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r=51||!r((function(){var t=[],n=t.constructor={};return n[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},2266:function(e,t,n){var r=n("da84"),o=n("0366"),i=n("c65b"),a=n("825a"),s=n("0d51"),l=n("e95a"),u=n("07fa"),c=n("3a9b"),f=n("9a1f"),d=n("35a1"),p=n("2a62"),h=r.TypeError,v=function(e,t){this.stopped=e,this.result=t},m=v.prototype;e.exports=function(e,t,n){var r,y,g,b,_,x,w,C=n&&n.that,S=!(!n||!n.AS_ENTRIES),O=!(!n||!n.IS_ITERATOR),E=!(!n||!n.INTERRUPTED),k=o(t,C),j=function(e){return r&&p(r,"normal",e),new v(!0,e)},$=function(e){return S?(a(e),E?k(e[0],e[1],j):k(e[0],e[1])):E?k(e,j):k(e)};if(O)r=e;else{if(y=d(e),!y)throw h(s(e)+" is not iterable");if(l(y)){for(g=0,b=u(e);b>g;g++)if(_=$(e[g]),_&&c(m,_))return _;return new v(!1)}r=f(e,y)}x=r.next;while(!(w=i(x,r)).done){try{_=$(w.value)}catch(A){p(r,"throw",A)}if("object"==typeof _&&_&&c(m,_))return _}return new v(!1)}},"23cb":function(e,t,n){var r=n("5926"),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},"23e7":function(e,t,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("cb2d"),s=n("ce4e"),l=n("e893"),u=n("94ca");e.exports=function(e,t){var n,c,f,d,p,h,v=e.target,m=e.global,y=e.stat;if(c=m?r:y?r[v]||s(v,{}):(r[v]||{}).prototype,c)for(f in t){if(p=t[f],e.noTargetGet?(h=o(c,f),d=h&&h.value):d=c[f],n=u(m?f:v+(y?".":"#")+f,e.forced),!n&&void 0!==d){if(typeof p==typeof d)continue;l(p,d)}(e.sham||d&&d.sham)&&i(p,"sham",!0),a(c,f,p,e)}}},"241c":function(e,t,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},2444:function(e,t,n){"use strict";(function(t){var r=n("c532"),o=n("c8af"),i=n("387f"),a={"Content-Type":"application/x-www-form-urlencoded"};function s(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function l(){var e;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof t&&"[object process]"===Object.prototype.toString.call(t))&&(e=n("b50d")),e}function u(e,t,n){if(r.isString(e))try{return(t||JSON.parse)(e),r.trim(e)}catch(o){if("SyntaxError"!==o.name)throw o}return(n||JSON.stringify)(e)}var c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:l(),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(s(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)||t&&"application/json"===t["Content-Type"]?(s(t,"application/json"),u(e)):e}],transformResponse:[function(e){var t=this.transitional,n=t&&t.silentJSONParsing,o=t&&t.forcedJSONParsing,a=!n&&"json"===this.responseType;if(a||o&&r.isString(e)&&e.length)try{return JSON.parse(e)}catch(s){if(a){if("SyntaxError"===s.name)throw i(s,this,"E_JSON_PARSE");throw s}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){c.headers[e]=r.merge(a)})),e.exports=c}).call(this,n("4362"))},"25f0":function(e,t,n){"use strict";var r=n("5e77").PROPER,o=n("cb2d"),i=n("825a"),a=n("577e"),s=n("d039"),l=n("90d8"),u="toString",c=RegExp.prototype,f=c[u],d=s((function(){return"/a/b"!=f.call({source:"a",flags:"b"})})),p=r&&f.name!=u;(d||p)&&o(RegExp.prototype,u,(function(){var e=i(this),t=a(e.source),n=a(l(e));return"/"+t+"/"+n}),{unsafe:!0})},2626:function(e,t,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),s=i("species");e.exports=function(e){var t=r(e),n=o.f;a&&t&&!t[s]&&n(t,s,{configurable:!0,get:function(){return this}})}},2877:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},"299c":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=136)}({136:function(e,t,n){"use strict";n.r(t);var r=n(5),o=n.n(r),i=n(18),a=n.n(i),s=n(2),l=n(3),u=n(7),c=n.n(u),f={name:"ElTooltip",mixins:[o.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(l["generateId"])(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new c.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=a()(200,(function(){return e.handleClosePopper()})))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var n=this.getFirstElement();if(!n)return null;var r=n.data=n.data||{};return r.staticClass=this.addTooltipClass(r.staticClass),n},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(s["on"])(this.referenceElm,"mouseenter",this.show),Object(s["on"])(this.referenceElm,"mouseleave",this.hide),Object(s["on"])(this.referenceElm,"focus",(function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()})),Object(s["on"])(this.referenceElm,"blur",this.handleBlur),Object(s["on"])(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick((function(){e.value&&e.updatePopper()}))},watch:{focusing:function(e){e?Object(s["addClass"])(this.referenceElm,"focusing"):Object(s["removeClass"])(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.showPopper=!0}),this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout((function(){e.showPopper=!1}),this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,n=0;nb)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},"10cb":function(e,t,n){},"13d2":function(e,t,n){var r=n("d039"),o=n("1626"),i=n("1a2d"),a=n("83ab"),s=n("5e77").CONFIGURABLE,l=n("8925"),u=n("69f3"),c=u.enforce,f=u.get,d=Object.defineProperty,p=a&&!r((function(){return 8!==d((function(){}),"length",{value:8}).length})),h=String(String).split("String"),v=e.exports=function(e,t,n){if("Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!i(e,"name")||s&&e.name!==t)&&d(e,"name",{value:t,configurable:!0}),p&&n&&i(n,"arity")&&e.length!==n.arity&&d(e,"length",{value:n.arity}),n&&i(n,"constructor")&&n.constructor){if(a)try{d(e,"prototype",{writable:!1})}catch(o){}}else e.prototype=void 0;var r=c(e);return i(r,"source")||(r.source=h.join("string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return o(this)&&f(this).source||l(this)}),"toString")},"14e5":function(e,t,n){"use strict";var r=n("23e7"),o=n("c65b"),i=n("59ed"),a=n("f069"),s=n("e667"),l=n("2266"),u=n("5eed");r({target:"Promise",stat:!0,forced:u},{all:function(e){var t=this,n=a.f(t),r=n.resolve,u=n.reject,c=s((function(){var n=i(t.resolve),a=[],s=0,c=1;l(e,(function(e){var i=s++,l=!1;c++,o(n,t,e).then((function(e){l||(l=!0,a[i]=e,--c||r(a))}),u)})),--c||r(a)}));return c.error&&u(c.value),n.promise}})},"14e9":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=131)}({131:function(e,t,n){"use strict";n.r(t);var r=n(16),o=n(38),i=n.n(o),a=n(3),s=n(2),l={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function u(e){var t=e.move,n=e.size,r=e.bar,o={},i="translate"+r.axis+"("+t+"%)";return o[r.size]=n,o.transform=i,o.msTransform=i,o.webkitTransform=i,o}var c={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return l[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,n=this.move,r=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+r.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:u({size:t,move:n,bar:r})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),n=this.$refs.thumb[this.bar.offset]/2,r=100*(t-n)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=r*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(s["on"])(document,"mousemove",this.mouseMoveDocumentHandler),Object(s["on"])(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var n=-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),r=this.$refs.thumb[this.bar.offset]-t,o=100*(n-r)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=o*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(s["off"])(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(s["off"])(document,"mouseup",this.mouseUpDocumentHandler)}},f={name:"ElScrollbar",components:{Bar:c},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=i()(),n=this.wrapStyle;if(t){var r="-"+t+"px",o="margin-bottom: "+r+"; margin-right: "+r+";";Array.isArray(this.wrapStyle)?(n=Object(a["toObject"])(this.wrapStyle),n.marginRight=n.marginBottom=r):"string"===typeof this.wrapStyle?n+=o:n=o}var s=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),l=e("div",{ref:"wrap",style:n,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[s]]),u=void 0;return u=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:n},[[s]])]:[l,e(c,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(c,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},u)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e=void 0,t=void 0,n=this.wrap;n&&(e=100*n.clientHeight/n.scrollHeight,t=100*n.clientWidth/n.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(r["addResizeListener"])(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(r["removeResizeListener"])(this.$refs.resize,this.update)},install:function(e){e.component(f.name,f)}};t["default"]=f},16:function(e,t){e.exports=n("4010")},2:function(e,t){e.exports=n("5924")},3:function(e,t){e.exports=n("8122")},38:function(e,t){e.exports=n("e62d")}})},1626:function(e,t){e.exports=function(e){return"function"==typeof e}},1951:function(e,t,n){},"19aa":function(e,t,n){var r=n("da84"),o=n("3a9b"),i=r.TypeError;e.exports=function(e,t){if(o(t,e))return e;throw i("Incorrect invocation")}},"1a2d":function(e,t,n){var r=n("e330"),o=n("7b0b"),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},"1be4":function(e,t,n){var r=n("d066");e.exports=r("document","documentElement")},"1c7e":function(e,t,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,s={next:function(){return{done:!!a++}},return:function(){i=!0}};s[o]=function(){return this},Array.from(s,(function(){throw 2}))}catch(l){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(l){}return n}},"1cdc":function(e,t,n){var r=n("342f");e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},"1d2b":function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r=51||!r((function(){var t=[],n=t.constructor={};return n[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},2266:function(e,t,n){var r=n("da84"),o=n("0366"),i=n("c65b"),a=n("825a"),s=n("0d51"),l=n("e95a"),u=n("07fa"),c=n("3a9b"),f=n("9a1f"),d=n("35a1"),p=n("2a62"),h=r.TypeError,v=function(e,t){this.stopped=e,this.result=t},m=v.prototype;e.exports=function(e,t,n){var r,y,g,b,_,x,w,C=n&&n.that,S=!(!n||!n.AS_ENTRIES),O=!(!n||!n.IS_ITERATOR),E=!(!n||!n.INTERRUPTED),k=o(t,C),j=function(e){return r&&p(r,"normal",e),new v(!0,e)},$=function(e){return S?(a(e),E?k(e[0],e[1],j):k(e[0],e[1])):E?k(e,j):k(e)};if(O)r=e;else{if(y=d(e),!y)throw h(s(e)+" is not iterable");if(l(y)){for(g=0,b=u(e);b>g;g++)if(_=$(e[g]),_&&c(m,_))return _;return new v(!1)}r=f(e,y)}x=r.next;while(!(w=i(x,r)).done){try{_=$(w.value)}catch(A){p(r,"throw",A)}if("object"==typeof _&&_&&c(m,_))return _}return new v(!1)}},"23cb":function(e,t,n){var r=n("5926"),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},"23e7":function(e,t,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("cb2d"),s=n("ce4e"),l=n("e893"),u=n("94ca");e.exports=function(e,t){var n,c,f,d,p,h,v=e.target,m=e.global,y=e.stat;if(c=m?r:y?r[v]||s(v,{}):(r[v]||{}).prototype,c)for(f in t){if(p=t[f],e.noTargetGet?(h=o(c,f),d=h&&h.value):d=c[f],n=u(m?f:v+(y?".":"#")+f,e.forced),!n&&void 0!==d){if(typeof p==typeof d)continue;l(p,d)}(e.sham||d&&d.sham)&&i(p,"sham",!0),a(c,f,p,e)}}},"241c":function(e,t,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},2444:function(e,t,n){"use strict";(function(t){var r=n("c532"),o=n("c8af"),i=n("387f"),a={"Content-Type":"application/x-www-form-urlencoded"};function s(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function l(){var e;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof t&&"[object process]"===Object.prototype.toString.call(t))&&(e=n("b50d")),e}function u(e,t,n){if(r.isString(e))try{return(t||JSON.parse)(e),r.trim(e)}catch(o){if("SyntaxError"!==o.name)throw o}return(n||JSON.stringify)(e)}var c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:l(),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(s(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)||t&&"application/json"===t["Content-Type"]?(s(t,"application/json"),u(e)):e}],transformResponse:[function(e){var t=this.transitional,n=t&&t.silentJSONParsing,o=t&&t.forcedJSONParsing,a=!n&&"json"===this.responseType;if(a||o&&r.isString(e)&&e.length)try{return JSON.parse(e)}catch(s){if(a){if("SyntaxError"===s.name)throw i(s,this,"E_JSON_PARSE");throw s}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){c.headers[e]=r.merge(a)})),e.exports=c}).call(this,n("4362"))},"25f0":function(e,t,n){"use strict";var r=n("5e77").PROPER,o=n("cb2d"),i=n("825a"),a=n("577e"),s=n("d039"),l=n("90d8"),u="toString",c=RegExp.prototype,f=c[u],d=s((function(){return"/a/b"!=f.call({source:"a",flags:"b"})})),p=r&&f.name!=u;(d||p)&&o(RegExp.prototype,u,(function(){var e=i(this),t=a(e.source),n=a(l(e));return"/"+t+"/"+n}),{unsafe:!0})},2626:function(e,t,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),s=i("species");e.exports=function(e){var t=r(e),n=o.f;a&&t&&!t[s]&&n(t,s,{configurable:!0,get:function(){return this}})}},2877:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},"299c":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=136)}({136:function(e,t,n){"use strict";n.r(t);var r=n(5),o=n.n(r),i=n(18),a=n.n(i),s=n(2),l=n(3),u=n(7),c=n.n(u),f={name:"ElTooltip",mixins:[o.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(l["generateId"])(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new c.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=a()(200,(function(){return e.handleClosePopper()})))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var n=this.getFirstElement();if(!n)return null;var r=n.data=n.data||{};return r.staticClass=this.addTooltipClass(r.staticClass),n},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(s["on"])(this.referenceElm,"mouseenter",this.show),Object(s["on"])(this.referenceElm,"mouseleave",this.hide),Object(s["on"])(this.referenceElm,"focus",(function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()})),Object(s["on"])(this.referenceElm,"blur",this.handleBlur),Object(s["on"])(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick((function(){e.value&&e.updatePopper()}))},watch:{focusing:function(e){e?Object(s["addClass"])(this.referenceElm,"focusing"):Object(s["removeClass"])(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.showPopper=!0}),this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout((function(){e.showPopper=!1}),this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,n=0;n=2)e.mixin({beforeCreate:r});else{var n=e.prototype._init;e.prototype._init=function(e){void 0===e&&(e={}),e.init=e.init?[r].concat(e.init):r,n.call(this,e)}}function r(){var e=this.$options;e.store?this.$store="function"===typeof e.store?e.store():e.store:e.parent&&e.parent.$store&&(this.$store=e.parent.$store)}}var r="undefined"!==typeof window?window:"undefined"!==typeof e?e:{},o=r.__VUE_DEVTOOLS_GLOBAL_HOOK__;function i(e){o&&(e._devtoolHook=o,o.emit("vuex:init",e),o.on("vuex:travel-to-state",(function(t){e.replaceState(t)})),e.subscribe((function(e,t){o.emit("vuex:mutation",e,t)}),{prepend:!0}),e.subscribeAction((function(e,t){o.emit("vuex:action",e,t)}),{prepend:!0}))}function a(e,t){return e.filter(t)[0]}function s(e,t){if(void 0===t&&(t=[]),null===e||"object"!==typeof e)return e;var n=a(t,(function(t){return t.original===e}));if(n)return n.copy;var r=Array.isArray(e)?[]:{};return t.push({original:e,copy:r}),Object.keys(e).forEach((function(n){r[n]=s(e[n],t)})),r}function l(e,t){Object.keys(e).forEach((function(n){return t(e[n],n)}))}function u(e){return null!==e&&"object"===typeof e}function c(e){return e&&"function"===typeof e.then}function f(e,t){return function(){return e(t)}}var d=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"===typeof n?n():n)||{}},p={namespaced:{configurable:!0}};p.namespaced.get=function(){return!!this._rawModule.namespaced},d.prototype.addChild=function(e,t){this._children[e]=t},d.prototype.removeChild=function(e){delete this._children[e]},d.prototype.getChild=function(e){return this._children[e]},d.prototype.hasChild=function(e){return e in this._children},d.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},d.prototype.forEachChild=function(e){l(this._children,e)},d.prototype.forEachGetter=function(e){this._rawModule.getters&&l(this._rawModule.getters,e)},d.prototype.forEachAction=function(e){this._rawModule.actions&&l(this._rawModule.actions,e)},d.prototype.forEachMutation=function(e){this._rawModule.mutations&&l(this._rawModule.mutations,e)},Object.defineProperties(d.prototype,p);var h=function(e){this.register([],e,!1)};function v(e,t,n){if(t.update(n),n.modules)for(var r in n.modules){if(!t.getChild(r))return void 0;v(e.concat(r),t.getChild(r),n.modules[r])}}h.prototype.get=function(e){return e.reduce((function(e,t){return e.getChild(t)}),this.root)},h.prototype.getNamespace=function(e){var t=this.root;return e.reduce((function(e,n){return t=t.getChild(n),e+(t.namespaced?n+"/":"")}),"")},h.prototype.update=function(e){v([],this.root,e)},h.prototype.register=function(e,t,n){var r=this;void 0===n&&(n=!0);var o=new d(t,n);if(0===e.length)this.root=o;else{var i=this.get(e.slice(0,-1));i.addChild(e[e.length-1],o)}t.modules&&l(t.modules,(function(t,o){r.register(e.concat(o),t,n)}))},h.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1],r=t.getChild(n);r&&r.runtime&&t.removeChild(n)},h.prototype.isRegistered=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];return!!t&&t.hasChild(n)};var m;var y=function(e){var t=this;void 0===e&&(e={}),!m&&"undefined"!==typeof window&&window.Vue&&T(window.Vue);var n=e.plugins;void 0===n&&(n=[]);var r=e.strict;void 0===r&&(r=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new h(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new m,this._makeLocalGettersCache=Object.create(null);var o=this,a=this,s=a.dispatch,l=a.commit;this.dispatch=function(e,t){return s.call(o,e,t)},this.commit=function(e,t,n){return l.call(o,e,t,n)},this.strict=r;var u=this._modules.root.state;w(this,u,[],this._modules.root),x(this,u),n.forEach((function(e){return e(t)}));var c=void 0!==e.devtools?e.devtools:m.config.devtools;c&&i(this)},g={state:{configurable:!0}};function b(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function _(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;w(e,n,[],e._modules.root,!0),x(e,n,t)}function x(e,t,n){var r=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var o=e._wrappedGetters,i={};l(o,(function(t,n){i[n]=f(t,e),Object.defineProperty(e.getters,n,{get:function(){return e._vm[n]},enumerable:!0})}));var a=m.config.silent;m.config.silent=!0,e._vm=new m({data:{$$state:t},computed:i}),m.config.silent=a,e.strict&&j(e),r&&(n&&e._withCommit((function(){r._data.$$state=null})),m.nextTick((function(){return r.$destroy()})))}function w(e,t,n,r,o){var i=!n.length,a=e._modules.getNamespace(n);if(r.namespaced&&(e._modulesNamespaceMap[a],e._modulesNamespaceMap[a]=r),!i&&!o){var s=$(t,n.slice(0,-1)),l=n[n.length-1];e._withCommit((function(){m.set(s,l,r.state)}))}var u=r.context=C(e,a,n);r.forEachMutation((function(t,n){var r=a+n;O(e,r,t,u)})),r.forEachAction((function(t,n){var r=t.root?n:a+n,o=t.handler||t;E(e,r,o,u)})),r.forEachGetter((function(t,n){var r=a+n;k(e,r,t,u)})),r.forEachChild((function(r,i){w(e,t,n.concat(i),r,o)}))}function C(e,t,n){var r=""===t,o={dispatch:r?e.dispatch:function(n,r,o){var i=A(n,r,o),a=i.payload,s=i.options,l=i.type;return s&&s.root||(l=t+l),e.dispatch(l,a)},commit:r?e.commit:function(n,r,o){var i=A(n,r,o),a=i.payload,s=i.options,l=i.type;s&&s.root||(l=t+l),e.commit(l,a,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return e.getters}:function(){return S(e,t)}},state:{get:function(){return $(e.state,n)}}}),o}function S(e,t){if(!e._makeLocalGettersCache[t]){var n={},r=t.length;Object.keys(e.getters).forEach((function(o){if(o.slice(0,r)===t){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return e.getters[o]},enumerable:!0})}})),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}function O(e,t,n,r){var o=e._mutations[t]||(e._mutations[t]=[]);o.push((function(t){n.call(e,r.state,t)}))}function E(e,t,n,r){var o=e._actions[t]||(e._actions[t]=[]);o.push((function(t){var o=n.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},t);return c(o)||(o=Promise.resolve(o)),e._devtoolHook?o.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):o}))}function k(e,t,n,r){e._wrappedGetters[t]||(e._wrappedGetters[t]=function(e){return n(r.state,r.getters,e.state,e.getters)})}function j(e){e._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}function $(e,t){return t.reduce((function(e,t){return e[t]}),e)}function A(e,t,n){return u(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}function T(e){m&&e===m||(m=e,n(m))}g.state.get=function(){return this._vm._data.$$state},g.state.set=function(e){0},y.prototype.commit=function(e,t,n){var r=this,o=A(e,t,n),i=o.type,a=o.payload,s=(o.options,{type:i,payload:a}),l=this._mutations[i];l&&(this._withCommit((function(){l.forEach((function(e){e(a)}))})),this._subscribers.slice().forEach((function(e){return e(s,r.state)})))},y.prototype.dispatch=function(e,t){var n=this,r=A(e,t),o=r.type,i=r.payload,a={type:o,payload:i},s=this._actions[o];if(s){try{this._actionSubscribers.slice().filter((function(e){return e.before})).forEach((function(e){return e.before(a,n.state)}))}catch(u){0}var l=s.length>1?Promise.all(s.map((function(e){return e(i)}))):s[0](i);return new Promise((function(e,t){l.then((function(t){try{n._actionSubscribers.filter((function(e){return e.after})).forEach((function(e){return e.after(a,n.state)}))}catch(u){0}e(t)}),(function(e){try{n._actionSubscribers.filter((function(e){return e.error})).forEach((function(t){return t.error(a,n.state,e)}))}catch(u){0}t(e)}))}))}},y.prototype.subscribe=function(e,t){return b(e,this._subscribers,t)},y.prototype.subscribeAction=function(e,t){var n="function"===typeof e?{before:e}:e;return b(n,this._actionSubscribers,t)},y.prototype.watch=function(e,t,n){var r=this;return this._watcherVM.$watch((function(){return e(r.state,r.getters)}),t,n)},y.prototype.replaceState=function(e){var t=this;this._withCommit((function(){t._vm._data.$$state=e}))},y.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"===typeof e&&(e=[e]),this._modules.register(e,t),w(this,this.state,e,this._modules.get(e),n.preserveState),x(this,this.state)},y.prototype.unregisterModule=function(e){var t=this;"string"===typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit((function(){var n=$(t.state,e.slice(0,-1));m.delete(n,e[e.length-1])})),_(this)},y.prototype.hasModule=function(e){return"string"===typeof e&&(e=[e]),this._modules.isRegistered(e)},y.prototype.hotUpdate=function(e){this._modules.update(e),_(this,!0)},y.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(y.prototype,g);var P=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var r=H(this.$store,"mapState",e);if(!r)return;t=r.context.state,n=r.context.getters}return"function"===typeof o?o.call(this,t,n):t[o]},n[r].vuex=!0})),n})),L=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var r=this.$store.commit;if(e){var i=H(this.$store,"mapMutations",e);if(!i)return;r=i.context.commit}return"function"===typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n})),M=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;o=e+o,n[r]=function(){if(!e||H(this.$store,"mapGetters",e))return this.$store.getters[o]},n[r].vuex=!0})),n})),R=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var r=this.$store.dispatch;if(e){var i=H(this.$store,"mapActions",e);if(!i)return;r=i.context.dispatch}return"function"===typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n})),N=function(e){return{mapState:P.bind(null,e),mapGetters:M.bind(null,e),mapMutations:L.bind(null,e),mapActions:R.bind(null,e)}};function I(e){return F(e)?Array.isArray(e)?e.map((function(e){return{key:e,val:e}})):Object.keys(e).map((function(t){return{key:t,val:e[t]}})):[]}function F(e){return Array.isArray(e)||u(e)}function z(e){return function(t,n){return"string"!==typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function H(e,t,n){var r=e._modulesNamespaceMap[n];return r}function B(e){void 0===e&&(e={});var t=e.collapsed;void 0===t&&(t=!0);var n=e.filter;void 0===n&&(n=function(e,t,n){return!0});var r=e.transformer;void 0===r&&(r=function(e){return e});var o=e.mutationTransformer;void 0===o&&(o=function(e){return e});var i=e.actionFilter;void 0===i&&(i=function(e,t){return!0});var a=e.actionTransformer;void 0===a&&(a=function(e){return e});var l=e.logMutations;void 0===l&&(l=!0);var u=e.logActions;void 0===u&&(u=!0);var c=e.logger;return void 0===c&&(c=console),function(e){var f=s(e.state);"undefined"!==typeof c&&(l&&e.subscribe((function(e,i){var a=s(i);if(n(e,f,a)){var l=V(),u=o(e),d="mutation "+e.type+l;D(c,d,t),c.log("%c prev state","color: #9E9E9E; font-weight: bold",r(f)),c.log("%c mutation","color: #03A9F4; font-weight: bold",u),c.log("%c next state","color: #4CAF50; font-weight: bold",r(a)),W(c)}f=a})),u&&e.subscribeAction((function(e,n){if(i(e,n)){var r=V(),o=a(e),s="action "+e.type+r;D(c,s,t),c.log("%c action","color: #03A9F4; font-weight: bold",o),W(c)}})))}}function D(e,t,n){var r=n?e.groupCollapsed:e.group;try{r.call(e,t)}catch(o){e.log(t)}}function W(e){try{e.groupEnd()}catch(t){e.log("—— log end ——")}}function V(){var e=new Date;return" @ "+q(e.getHours(),2)+":"+q(e.getMinutes(),2)+":"+q(e.getSeconds(),2)+"."+q(e.getMilliseconds(),3)}function U(e,t){return new Array(t+1).join(e)}function q(e,t){return U("0",t-e.toString().length)+e}var G={Store:y,install:T,version:"3.6.2",mapState:P,mapMutations:L,mapGetters:M,mapActions:R,createNamespacedHelpers:N,createLogger:B};t["a"]=G}).call(this,n("c8ba"))},"30b5":function(e,t,n){"use strict";var r=n("c532");function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(r.isURLSearchParams(t))i=t.toString();else{var a=[];r.forEach(t,(function(e,t){null!==e&&"undefined"!==typeof e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(o(t)+"="+o(e))})))})),i=a.join("&")}if(i){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}},"342f":function(e,t,n){var r=n("d066");e.exports=r("navigator","userAgent")||""},3529:function(e,t,n){"use strict";var r=n("23e7"),o=n("c65b"),i=n("59ed"),a=n("f069"),s=n("e667"),l=n("2266"),u=n("5eed");r({target:"Promise",stat:!0,forced:u},{race:function(e){var t=this,n=a.f(t),r=n.reject,u=s((function(){var a=i(t.resolve);l(e,(function(e){o(a,t,e).then(n.resolve,r)}))}));return u.error&&r(u.value),n.promise}})},"35a1":function(e,t,n){var r=n("f5df"),o=n("dc4a"),i=n("3f8c"),a=n("b622"),s=a("iterator");e.exports=function(e){if(void 0!=e)return o(e,s)||o(e,"@@iterator")||i[r(e)]}},"37e8":function(e,t,n){var r=n("83ab"),o=n("aed9"),i=n("9bf2"),a=n("825a"),s=n("fc6a"),l=n("df75");t.f=r&&!o?Object.defineProperties:function(e,t){a(e);var n,r=s(t),o=l(t),u=o.length,c=0;while(u>c)i.f(e,n=o[c++],r[n]);return e}},"387f":function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},"38a0":function(e,t,n){},3934:function(e,t,n){"use strict";var r=n("c532");e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return function(){return!0}}()},"3a9b":function(e,t,n){var r=n("e330");e.exports=r({}.isPrototypeOf)},"3bbe":function(e,t,n){var r=n("da84"),o=n("1626"),i=r.String,a=r.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+i(e)+" as a prototype")}},"3c4e":function(e,t,n){"use strict";var r=function(e){return o(e)&&!i(e)};function o(e){return!!e&&"object"===typeof e}function i(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||l(e)}var a="function"===typeof Symbol&&Symbol.for,s=a?Symbol.for("react.element"):60103;function l(e){return e.$$typeof===s}function u(e){return Array.isArray(e)?[]:{}}function c(e,t){var n=t&&!0===t.clone;return n&&r(e)?p(u(e),e,t):e}function f(e,t,n){var o=e.slice();return t.forEach((function(t,i){"undefined"===typeof o[i]?o[i]=c(t,n):r(t)?o[i]=p(e[i],t,n):-1===e.indexOf(t)&&o.push(c(t,n))})),o}function d(e,t,n){var o={};return r(e)&&Object.keys(e).forEach((function(t){o[t]=c(e[t],n)})),Object.keys(t).forEach((function(i){r(t[i])&&e[i]?o[i]=p(e[i],t[i],n):o[i]=c(t[i],n)})),o}function p(e,t,n){var r=Array.isArray(t),o=Array.isArray(e),i=n||{arrayMerge:f},a=r===o;if(a){if(r){var s=i.arrayMerge||f;return s(e,t,n)}return d(e,t,n)}return c(t,n)}p.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce((function(e,n){return p(e,n,t)}))};var h=p;e.exports=h},"3ca3":function(e,t,n){"use strict";var r=n("6547").charAt,o=n("577e"),i=n("69f3"),a=n("7dd0"),s="String Iterator",l=i.set,u=i.getterFor(s);a(String,"String",(function(e){l(this,{type:s,string:o(e),index:0})}),(function(){var e,t=u(this),n=t.string,o=t.index;return o>=n.length?{value:void 0,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},"3f8c":function(e,t){e.exports={}},4010:function(e,t,n){"use strict";t.__esModule=!0,t.removeResizeListener=t.addResizeListener=void 0;var r=n("6dd8"),o=a(r),i=n("9619");function a(e){return e&&e.__esModule?e:{default:e}}var s="undefined"===typeof window,l=function(e){var t=e,n=Array.isArray(t),r=0;for(t=n?t:t[Symbol.iterator]();;){var o;if(n){if(r>=t.length)break;o=t[r++]}else{if(r=t.next(),r.done)break;o=r.value}var i=o,a=i.target.__resizeListeners__||[];a.length&&a.forEach((function(e){e()}))}};t.addResizeListener=function(e,t){s||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new o.default((0,i.debounce)(16,l)),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},"40d5":function(e,t,n){var r=n("d039");e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},"417f":function(e,t,n){"use strict";t.__esModule=!0;var r=n("2b0e"),o=a(r),i=n("5924");function a(e){return e&&e.__esModule?e:{default:e}}var s=[],l="@@clickoutsideContext",u=void 0,c=0;function f(e,t,n){return function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(n&&n.context&&r.target&&o.target)||e.contains(r.target)||e.contains(o.target)||e===r.target||n.context.popperElm&&(n.context.popperElm.contains(r.target)||n.context.popperElm.contains(o.target))||(t.expression&&e[l].methodName&&n.context[e[l].methodName]?n.context[e[l].methodName]():e[l].bindingFn&&e[l].bindingFn())}}!o.default.prototype.$isServer&&(0,i.on)(document,"mousedown",(function(e){return u=e})),!o.default.prototype.$isServer&&(0,i.on)(document,"mouseup",(function(e){s.forEach((function(t){return t[l].documentHandler(e,u)}))})),t.default={bind:function(e,t,n){s.push(e);var r=c++;e[l]={id:r,documentHandler:f(e,t,n),methodName:t.expression,bindingFn:t.value}},update:function(e,t,n){e[l].documentHandler=f(e,t,n),e[l].methodName=t.expression,e[l].bindingFn=t.value},unbind:function(e){for(var t=s.length,n=0;n=51&&/native code/.test(e))return!1;var n=new o((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))},i=n.constructor={};return i[p]=r,h=n.then((function(){}))instanceof r,!h||!t&&u&&!v}));e.exports={CONSTRUCTOR:m,REJECTION_EVENT:v,SUBCLASSING:h}},4840:function(e,t,n){var r=n("825a"),o=n("5087"),i=n("b622"),a=i("species");e.exports=function(e,t){var n,i=r(e).constructor;return void 0===i||void 0==(n=r(i)[a])?t:o(n)}},"485a":function(e,t,n){var r=n("da84"),o=n("c65b"),i=n("1626"),a=n("861d"),s=r.TypeError;e.exports=function(e,t){var n,r;if("string"===t&&i(n=e.toString)&&!a(r=o(n,e)))return r;if(i(n=e.valueOf)&&!a(r=o(n,e)))return r;if("string"!==t&&i(n=e.toString)&&!a(r=o(n,e)))return r;throw s("Can't convert object to primitive value")}},4897:function(e,t,n){"use strict";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var r=n("f0d9"),o=f(r),i=n("2b0e"),a=f(i),s=n("3c4e"),l=f(s),u=n("9d7e"),c=f(u);function f(e){return e&&e.__esModule?e:{default:e}}var d=(0,c.default)(a.default),p=o.default,h=!1,v=function(){var e=Object.getPrototypeOf(this||a.default).$t;if("function"===typeof e&&a.default.locale)return h||(h=!0,a.default.locale(a.default.config.lang,(0,l.default)(p,a.default.locale(a.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},m=t.t=function(e,t){var n=v.apply(this,arguments);if(null!==n&&void 0!==n)return n;for(var r=e.split("."),o=p,i=0,a=r.length;i0){var r=t[t.length-1];if(r.id===e){if(r.modalClass){var o=r.modalClass.trim().split(/\s+/);o.forEach((function(e){return(0,i.removeClass)(n,e)}))}t.pop(),t.length>0&&(n.style.zIndex=t[t.length-1].zIndex)}else for(var a=t.length-1;a>=0;a--)if(t[a].id===e){t.splice(a,1);break}}0===t.length&&(this.modalFade&&(0,i.addClass)(n,"v-modal-leave"),setTimeout((function(){0===t.length&&(n.parentNode&&n.parentNode.removeChild(n),n.style.display="none",d.modalDom=void 0),(0,i.removeClass)(n,"v-modal-leave")}),200))}};Object.defineProperty(d,"zIndex",{configurable:!0,get:function(){return l||(u=u||(o.default.prototype.$ELEMENT||{}).zIndex||2e3,l=!0),u},set:function(e){u=e}});var p=function(){if(!o.default.prototype.$isServer&&d.modalStack.length>0){var e=d.modalStack[d.modalStack.length-1];if(!e)return;var t=d.getInstance(e.id);return t}};o.default.prototype.$isServer||window.addEventListener("keydown",(function(e){if(27===e.keyCode){var t=p();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}})),t.default=d},"4d64":function(e,t,n){var r=n("fc6a"),o=n("23cb"),i=n("07fa"),a=function(e){return function(t,n,a){var s,l=r(t),u=i(l),c=o(a,u);if(e&&n!=n){while(u>c)if(s=l[c++],s!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},5087:function(e,t,n){var r=n("da84"),o=n("68ee"),i=n("0d51"),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a constructor")}},"50c4":function(e,t,n){var r=n("5926"),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},5128:function(e,t,n){"use strict";t.__esModule=!0,t.PopupManager=void 0;var r=n("2b0e"),o=d(r),i=n("7f4d"),a=d(i),s=n("4b26"),l=d(s),u=n("e62d"),c=d(u),f=n("5924");function d(e){return e&&e.__esModule?e:{default:e}}var p=1,h=void 0;t.default={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId="popup-"+p++,l.default.register(this._popupId,this)},beforeDestroy:function(){l.default.deregister(this._popupId),l.default.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,o.default.nextTick((function(){t.open()})))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var n=(0,a.default)({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var r=Number(n.openDelay);r>0?this._openTimer=setTimeout((function(){t._openTimer=null,t.doOpen(n)}),r):this.doOpen(n)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,n=e.modal,r=e.zIndex;if(r&&(l.default.zIndex=r),n&&(this._closing&&(l.default.closeModal(this._popupId),this._closing=!1),l.default.openModal(this._popupId,l.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,f.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,f.getStyle)(document.body,"paddingRight"),10)),h=(0,c.default)();var o=document.documentElement.clientHeight0&&(o||"scroll"===i)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+h+"px"),(0,f.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=l.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout((function(){e._closeTimer=null,e.doClose()}),t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){l.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,f.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=l.default},5270:function(e,t,n){"use strict";var r=n("c532"),o=n("c401"),i=n("2e67"),a=n("2444");function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){s(e),e.headers=e.headers||{},e.data=o.call(e,e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]}));var t=e.adapter||a.adapter;return t(e).then((function(t){return s(e),t.data=o.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(s(e),t&&t.response&&(t.response.data=o.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},5466:function(e,t,n){},5692:function(e,t,n){var r=n("c430"),o=n("c6cd");(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.4",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.4/LICENSE",source:"https://github.com/zloirock/core-js"})},"56ef":function(e,t,n){var r=n("d066"),o=n("e330"),i=n("241c"),a=n("7418"),s=n("825a"),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=a.f;return n?l(t,n(e)):t}},"577e":function(e,t,n){var r=n("da84"),o=n("f5df"),i=r.String;e.exports=function(e){if("Symbol"===o(e))throw TypeError("Cannot convert a Symbol value to a string");return i(e)}},5924:function(e,t,n){"use strict";t.__esModule=!0,t.isInContainer=t.getScrollContainer=t.isScroll=t.getStyle=t.once=t.off=t.on=void 0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.hasClass=v,t.addClass=m,t.removeClass=y,t.setStyle=b;var o=n("2b0e"),i=a(o);function a(e){return e&&e.__esModule?e:{default:e}}var s=i.default.prototype.$isServer,l=/([\:\-\_]+(.))/g,u=/^moz([A-Z])/,c=s?0:Number(document.documentMode),f=function(e){return(e||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")},d=function(e){return e.replace(l,(function(e,t,n,r){return r?n.toUpperCase():n})).replace(u,"Moz$1")},p=t.on=function(){return!s&&document.addEventListener?function(e,t,n){e&&t&&n&&e.addEventListener(t,n,!1)}:function(e,t,n){e&&t&&n&&e.attachEvent("on"+t,n)}}(),h=t.off=function(){return!s&&document.removeEventListener?function(e,t,n){e&&t&&e.removeEventListener(t,n,!1)}:function(e,t,n){e&&t&&e.detachEvent("on"+t,n)}}();t.once=function(e,t,n){var r=function r(){n&&n.apply(this,arguments),h(e,t,r)};p(e,t,r)};function v(e,t){if(!e||!t)return!1;if(-1!==t.indexOf(" "))throw new Error("className should not contain space.");return e.classList?e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")>-1}function m(e,t){if(e){for(var n=e.className,r=(t||"").split(" "),o=0,i=r.length;or.top&&n.right>r.left&&n.left0?r:n)(t)}},"597f":function(e,t){e.exports=function(e,t,n,r){var o,i=0;function a(){var a=this,s=Number(new Date)-i,l=arguments;function u(){i=Number(new Date),n.apply(a,l)}function c(){o=void 0}r&&!o&&u(),o&&clearTimeout(o),void 0===r&&s>e?u():!0!==t&&(o=setTimeout(r?c:u,void 0===r?e-s:e))}return"boolean"!==typeof t&&(r=n,n=t,t=void 0),a}},"59ed":function(e,t,n){var r=n("da84"),o=n("1626"),i=n("0d51"),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a function")}},"5c6c":function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},"5e77":function(e,t,n){var r=n("83ab"),o=n("1a2d"),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},"5e7e":function(e,t,n){"use strict";var r,o,i,a,s=n("23e7"),l=n("c430"),u=n("605d"),c=n("da84"),f=n("c65b"),d=n("cb2d"),p=n("d2bb"),h=n("d44e"),v=n("2626"),m=n("59ed"),y=n("1626"),g=n("861d"),b=n("19aa"),_=n("4840"),x=n("2cf4").set,w=n("b575"),C=n("44de"),S=n("e667"),O=n("01b4"),E=n("69f3"),k=n("d256"),j=n("4738"),$=n("f069"),A="Promise",T=j.CONSTRUCTOR,P=j.REJECTION_EVENT,L=j.SUBCLASSING,M=E.getterFor(A),R=E.set,N=k&&k.prototype,I=k,F=N,z=c.TypeError,H=c.document,B=c.process,D=$.f,W=D,V=!!(H&&H.createEvent&&c.dispatchEvent),U="unhandledrejection",q="rejectionhandled",G=0,K=1,X=2,Y=1,J=2,Q=function(e){var t;return!(!g(e)||!y(t=e.then))&&t},Z=function(e,t){var n,r,o,i=t.value,a=t.state==K,s=a?e.ok:e.fail,l=e.resolve,u=e.reject,c=e.domain;try{s?(a||(t.rejection===J&&oe(t),t.rejection=Y),!0===s?n=i:(c&&c.enter(),n=s(i),c&&(c.exit(),o=!0)),n===e.promise?u(z("Promise-chain cycle")):(r=Q(n))?f(r,n,l,u):l(n)):u(i)}catch(d){c&&!o&&c.exit(),u(d)}},ee=function(e,t){e.notified||(e.notified=!0,w((function(){var n,r=e.reactions;while(n=r.get())Z(n,e);e.notified=!1,t&&!e.rejection&&ne(e)})))},te=function(e,t,n){var r,o;V?(r=H.createEvent("Event"),r.promise=t,r.reason=n,r.initEvent(e,!1,!0),c.dispatchEvent(r)):r={promise:t,reason:n},!P&&(o=c["on"+e])?o(r):e===U&&C("Unhandled promise rejection",n)},ne=function(e){f(x,c,(function(){var t,n=e.facade,r=e.value,o=re(e);if(o&&(t=S((function(){u?B.emit("unhandledRejection",r,n):te(U,n,r)})),e.rejection=u||re(e)?J:Y,t.error))throw t.value}))},re=function(e){return e.rejection!==Y&&!e.parent},oe=function(e){f(x,c,(function(){var t=e.facade;u?B.emit("rejectionHandled",t):te(q,t,e.value)}))},ie=function(e,t,n){return function(r){e(t,r,n)}},ae=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=X,ee(e,!0))},se=function(e,t,n){if(!e.done){e.done=!0,n&&(e=n);try{if(e.facade===t)throw z("Promise can't be resolved itself");var r=Q(t);r?w((function(){var n={done:!1};try{f(r,t,ie(se,n,e),ie(ae,n,e))}catch(o){ae(n,o,e)}})):(e.value=t,e.state=K,ee(e,!1))}catch(o){ae({done:!1},o,e)}}};if(T&&(I=function(e){b(this,F),m(e),f(r,this);var t=M(this);try{e(ie(se,t),ie(ae,t))}catch(n){ae(t,n)}},F=I.prototype,r=function(e){R(this,{type:A,done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:G,value:void 0})},r.prototype=d(F,"then",(function(e,t){var n=M(this),r=D(_(this,I));return n.parent=!0,r.ok=!y(e)||e,r.fail=y(t)&&t,r.domain=u?B.domain:void 0,n.state==G?n.reactions.add(r):w((function(){Z(r,n)})),r.promise})),o=function(){var e=new r,t=M(e);this.promise=e,this.resolve=ie(se,t),this.reject=ie(ae,t)},$.f=D=function(e){return e===I||e===i?new o(e):W(e)},!l&&y(k)&&N!==Object.prototype)){a=N.then,L||d(N,"then",(function(e,t){var n=this;return new I((function(e,t){f(a,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete N.constructor}catch(le){}p&&p(N,F)}s({global:!0,wrap:!0,forced:T},{Promise:I}),h(I,A,!1,!0),v(A)},"5eed":function(e,t,n){var r=n("d256"),o=n("1c7e"),i=n("4738").CONSTRUCTOR;e.exports=i||!o((function(e){r.all(e).then(void 0,(function(){}))}))},"5f02":function(e,t,n){"use strict";e.exports=function(e){return"object"===typeof e&&!0===e.isAxiosError}},"605d":function(e,t,n){var r=n("c6b6"),o=n("da84");e.exports="process"==r(o.process)},6069:function(e,t){e.exports="object"==typeof window&&"object"!=typeof Deno},"60da":function(e,t,n){"use strict";var r=n("83ab"),o=n("e330"),i=n("c65b"),a=n("d039"),s=n("df75"),l=n("7418"),u=n("d1e7"),c=n("7b0b"),f=n("44ad"),d=Object.assign,p=Object.defineProperty,h=o([].concat);e.exports=!d||a((function(){if(r&&1!==d({b:1},d(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=d({},e)[n]||s(d({},t)).join("")!=o}))?function(e,t){var n=c(e),o=arguments.length,a=1,d=l.f,p=u.f;while(o>a){var v,m=f(arguments[a++]),y=d?h(s(m),d(m)):s(m),g=y.length,b=0;while(g>b)v=y[b++],r&&!i(p,m,v)||(n[v]=m[v])}return n}:d},6167:function(e,t,n){"use strict";var r,o;"function"===typeof Symbol&&Symbol.iterator;(function(i,a){r=a,o="function"===typeof r?r.call(t,n,t,e):r,void 0===o||(e.exports=o)})(0,(function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function n(e,n,r){this._reference=e.jquery?e[0]:e,this.state={};var o="undefined"===typeof n||null===n,i=n&&"[object Object]"===Object.prototype.toString.call(n);return this._popper=o||i?this.parse(i?n:{}):n.jquery?n[0]:n,this._options=Object.assign({},t,r),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),f(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function r(t){var n=t.style.display,r=t.style.visibility;t.style.display="block",t.style.visibility="hidden";t.offsetWidth;var o=e.getComputedStyle(t),i=parseFloat(o.marginTop)+parseFloat(o.marginBottom),a=parseFloat(o.marginLeft)+parseFloat(o.marginRight),s={width:t.offsetWidth+a,height:t.offsetHeight+i};return t.style.display=n,t.style.visibility=r,s}function o(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,(function(e){return t[e]}))}function i(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var n,r=0;for(n in e){if(e[n]===t)return r;r++}return null}function s(t,n){var r=e.getComputedStyle(t,null);return r[n]}function l(t){var n=t.offsetParent;return n!==e.document.body&&n?n:e.document.documentElement}function u(t){var n=t.parentNode;return n?n===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(s(n,"overflow"))||-1!==["scroll","auto"].indexOf(s(n,"overflow-x"))||-1!==["scroll","auto"].indexOf(s(n,"overflow-y"))?n:u(t.parentNode):t}function c(t){return t!==e.document.body&&("fixed"===s(t,"position")||(t.parentNode?c(t.parentNode):t))}function f(e,t){function n(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}Object.keys(t).forEach((function(r){var o="";-1!==["width","height","top","right","bottom","left"].indexOf(r)&&n(t[r])&&(o="px"),e.style[r]=t[r]+o}))}function d(e){var t={};return e&&"[object Function]"===t.toString.call(e)}function p(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function h(e){var t=e.getBoundingClientRect(),n=-1!=navigator.userAgent.indexOf("MSIE"),r=n&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:r,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-r}}function v(e,t,n){var r=h(e),o=h(t);if(n){var i=u(t);o.top+=i.scrollTop,o.bottom+=i.scrollTop,o.left+=i.scrollLeft,o.right+=i.scrollLeft}var a={top:r.top-o.top,left:r.left-o.left,bottom:r.top-o.top+r.height,right:r.left-o.left+r.width,width:r.width,height:r.height};return a}function m(t){for(var n=["","ms","webkit","moz","o"],r=0;r1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element===!1&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(o),o;function s(e,t){t.forEach((function(t){e.classList.add(t)}))}function l(e,t){t.forEach((function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")}))}},n.prototype._getPosition=function(e,t){var n=l(t);if(this._options.forceAbsolute)return"absolute";var r=c(t,n);return r?"fixed":"absolute"},n.prototype._getOffsets=function(e,t,n){n=n.split("-")[0];var o={};o.position=this.state.position;var i="fixed"===o.position,a=v(t,l(e),i),s=r(e);return-1!==["right","left"].indexOf(n)?(o.top=a.top+a.height/2-s.height/2,o.left="left"===n?a.left-s.width:a.right):(o.left=a.left+a.width/2-s.width/2,o.top="top"===n?a.top-s.height:a.bottom),o.width=s.width,o.height=s.height,{popper:o,reference:a}},n.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=u(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},n.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},n.prototype._getBoundaries=function(t,n,r){var o,i,a={};if("window"===r){var s=e.document.body,c=e.document.documentElement;i=Math.max(s.scrollHeight,s.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight),o=Math.max(s.scrollWidth,s.offsetWidth,c.clientWidth,c.scrollWidth,c.offsetWidth),a={top:0,right:o,bottom:i,left:0}}else if("viewport"===r){var f=l(this._popper),d=u(this._popper),h=p(f),v=function(e){return e==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):e.scrollTop},m=function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft},y="fixed"===t.offsets.popper.position?0:v(d),g="fixed"===t.offsets.popper.position?0:m(d);a={top:0-(h.top-y),right:e.document.documentElement.clientWidth-(h.left-g),bottom:e.document.documentElement.clientHeight-(h.top-y),left:0-(h.left-g)}}else a=l(this._popper)===r?{top:0,left:0,right:r.clientWidth,bottom:r.clientHeight}:p(r);return a.left+=n,a.right-=n,a.top=a.top+n,a.bottom=a.bottom-n,a},n.prototype.runModifiers=function(e,t,n){var r=t.slice();return void 0!==n&&(r=this._options.modifiers.slice(0,a(this._options.modifiers,n))),r.forEach(function(t){d(t)&&(e=t.call(this,e))}.bind(this)),e},n.prototype.isModifierRequired=function(e,t){var n=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,n).filter((function(e){return e===t})).length},n.prototype.modifiers={},n.prototype.modifiers.applyStyle=function(e){var t,n={position:e.offsets.popper.position},r=Math.round(e.offsets.popper.left),o=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=m("transform"))?(n[t]="translate3d("+r+"px, "+o+"px, 0)",n.top=0,n.left=0):(n.left=r,n.top=o),Object.assign(n,e.styles),f(this._popper,n),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&f(e.arrowElement,e.offsets.arrow),e},n.prototype.modifiers.shift=function(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var o=e.offsets.reference,a=i(e.offsets.popper),s={y:{start:{top:o.top},end:{top:o.top+o.height-a.height}},x:{start:{left:o.left},end:{left:o.left+o.width-a.width}}},l=-1!==["bottom","top"].indexOf(n)?"x":"y";e.offsets.popper=Object.assign(a,s[l][r])}return e},n.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,n=i(e.offsets.popper),r={left:function(){var t=n.left;return n.lefte.boundaries.right&&(t=Math.min(n.left,e.boundaries.right-n.width)),{left:t}},top:function(){var t=n.top;return n.tope.boundaries.bottom&&(t=Math.min(n.top,e.boundaries.bottom-n.height)),{top:t}}};return t.forEach((function(t){e.offsets.popper=Object.assign(n,r[t]())})),e},n.prototype.modifiers.keepTogether=function(e){var t=i(e.offsets.popper),n=e.offsets.reference,r=Math.floor;return t.rightr(n.right)&&(e.offsets.popper.left=r(n.right)),t.bottomr(n.bottom)&&(e.offsets.popper.top=r(n.bottom)),e},n.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],n=o(t),r=e.placement.split("-")[1]||"",a=[];return a="flip"===this._options.flipBehavior?[t,n]:this._options.flipBehavior,a.forEach(function(s,l){if(t===s&&a.length!==l+1){t=e.placement.split("-")[0],n=o(t);var u=i(e.offsets.popper),c=-1!==["right","bottom"].indexOf(t);(c&&Math.floor(e.offsets.reference[t])>Math.floor(u[n])||!c&&Math.floor(e.offsets.reference[t])s[p]&&(e.offsets.popper[f]+=l[f]+h-s[p]);var v=l[f]+(n||l[c]/2-h/2),m=v-s[f];return m=Math.max(Math.min(s[c]-h-8,m),8),o[f]=m,o[d]="",e.offsets.arrow=o,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),n=1;n=p?e?"":void 0:(r=l(f,d),r<55296||r>56319||d+1===p||(c=l(f,d+1))<56320||c>57343?e?s(f,d):r:e?u(f,d,d+2):c-56320+(r-55296<<10)+65536)}};e.exports={codeAt:c(!1),charAt:c(!0)}},"65f0":function(e,t,n){var r=n("0b42");e.exports=function(e,t){return new(r(e))(0===t?0:t)}},"68ee":function(e,t,n){var r=n("e330"),o=n("d039"),i=n("1626"),a=n("f5df"),s=n("d066"),l=n("8925"),u=function(){},c=[],f=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,p=r(d.exec),h=!d.exec(u),v=function(e){if(!i(e))return!1;try{return f(u,c,e),!0}catch(t){return!1}},m=function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!p(d,l(e))}catch(t){return!0}};m.sham=!0,e.exports=!f||o((function(){var e;return v(v.call)||!v(Object)||!v((function(){e=!0}))||e}))?m:v},"69f3":function(e,t,n){var r,o,i,a=n("7f9a"),s=n("da84"),l=n("e330"),u=n("861d"),c=n("9112"),f=n("1a2d"),d=n("c6cd"),p=n("f772"),h=n("d012"),v="Object already initialized",m=s.TypeError,y=s.WeakMap,g=function(e){return i(e)?o(e):r(e,{})},b=function(e){return function(t){var n;if(!u(t)||(n=o(t)).type!==e)throw m("Incompatible receiver, "+e+" required");return n}};if(a||d.state){var _=d.state||(d.state=new y),x=l(_.get),w=l(_.has),C=l(_.set);r=function(e,t){if(w(_,e))throw new m(v);return t.facade=e,C(_,e,t),t},o=function(e){return x(_,e)||{}},i=function(e){return w(_,e)}}else{var S=p("state");h[S]=!0,r=function(e,t){if(f(e,S))throw new m(v);return t.facade=e,c(e,S,t),t},o=function(e){return f(e,S)?e[S]:{}},i=function(e){return f(e,S)}}e.exports={set:r,get:o,has:i,enforce:g,getterFor:b}},"6ac9":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=77)}({0:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},2:function(e,t){e.exports=n("5924")},3:function(e,t){e.exports=n("8122")},5:function(e,t){e.exports=n("e974")},7:function(e,t){e.exports=n("2b0e")},77:function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",[n("transition",{attrs:{name:e.transition},on:{"after-enter":e.handleAfterEnter,"after-leave":e.handleAfterLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:!e.disabled&&e.showPopper,expression:"!disabled && showPopper"}],ref:"popper",staticClass:"el-popover el-popper",class:[e.popperClass,e.content&&"el-popover--plain"],style:{width:e.width+"px"},attrs:{role:"tooltip",id:e.tooltipId,"aria-hidden":e.disabled||!e.showPopper?"true":"false"}},[e.title?n("div",{staticClass:"el-popover__title",domProps:{textContent:e._s(e.title)}}):e._e(),e._t("default",[e._v(e._s(e.content))])],2)]),n("span",{ref:"wrapper",staticClass:"el-popover__reference-wrapper"},[e._t("reference")],2)],1)},o=[];r._withStripped=!0;var i=n(5),a=n.n(i),s=n(2),l=n(3),u={name:"ElPopover",mixins:[a.a],props:{trigger:{type:String,default:"click",validator:function(e){return["click","focus","hover","manual"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(l["generateId"])()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(Object(s["addClass"])(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),n.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(s["on"])(t,"focusin",(function(){e.handleFocus();var n=t.__vue__;n&&"function"===typeof n.focus&&n.focus()})),Object(s["on"])(n,"focusin",this.handleFocus),Object(s["on"])(t,"focusout",this.handleBlur),Object(s["on"])(n,"focusout",this.handleBlur)),Object(s["on"])(t,"keydown",this.handleKeydown),Object(s["on"])(t,"click",this.handleClick)),"click"===this.trigger?(Object(s["on"])(t,"click",this.doToggle),Object(s["on"])(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(s["on"])(t,"mouseenter",this.handleMouseEnter),Object(s["on"])(n,"mouseenter",this.handleMouseEnter),Object(s["on"])(t,"mouseleave",this.handleMouseLeave),Object(s["on"])(n,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(s["on"])(t,"focusin",this.doShow),Object(s["on"])(t,"focusout",this.doClose)):(Object(s["on"])(t,"mousedown",this.doShow),Object(s["on"])(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(s["addClass"])(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(s["removeClass"])(this.referenceElm,"focusing")},handleBlur:function(){Object(s["removeClass"])(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout((function(){e.showPopper=!0}),this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout((function(){e.showPopper=!1}),this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&n&&!n.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(s["off"])(e,"click",this.doToggle),Object(s["off"])(e,"mouseup",this.doClose),Object(s["off"])(e,"mousedown",this.doShow),Object(s["off"])(e,"focusin",this.doShow),Object(s["off"])(e,"focusout",this.doClose),Object(s["off"])(e,"mousedown",this.doShow),Object(s["off"])(e,"mouseup",this.doClose),Object(s["off"])(e,"mouseleave",this.handleMouseLeave),Object(s["off"])(e,"mouseenter",this.handleMouseEnter),Object(s["off"])(document,"click",this.handleDocumentClick)}},c=u,f=n(0),d=Object(f["a"])(c,r,o,!1,null,null,null);d.options.__file="packages/popover/src/main.vue";var p=d.exports,h=function(e,t,n){var r=t.expression?t.value:t.arg,o=n.context.$refs[r];o&&(Array.isArray(o)?o[0].$refs.reference=e:o.$refs.reference=e)},v={bind:function(e,t,n){h(e,t,n)},inserted:function(e,t,n){h(e,t,n)}},m=n(7),y=n.n(m);y.a.directive("popover",v),p.install=function(e){e.directive("popover",v),e.component(p.name,p)},p.directive=v;t["default"]=p}})},"6b7c":function(e,t,n){"use strict";t.__esModule=!0;var r=n("4897");t.default={methods:{t:function(){for(var e=arguments.length,t=Array(e),n=0;n0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),c?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,r=u.some((function(e){return!!~n.indexOf(e)}));r&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),d=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),j="undefined"!==typeof WeakMap?new WeakMap:new n,$=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=f.getInstance(),r=new k(t,n,this);j.set(this,r)}return e}();["observe","unobserve","disconnect"].forEach((function(e){$.prototype[e]=function(){var t;return(t=j.get(this))[e].apply(t,arguments)}}));var A=function(){return"undefined"!==typeof o.ResizeObserver?o.ResizeObserver:$}();t["default"]=A}.call(this,n("c8ba"))},"6ed5":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=78)}({0:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},10:function(e,t){e.exports=n("f3ad")},13:function(e,t){e.exports=n("5128")},14:function(e,t){e.exports=n("eedf")},2:function(e,t){e.exports=n("5924")},20:function(e,t){e.exports=n("4897")},23:function(e,t){e.exports=n("41f8")},47:function(e,t){e.exports=n("722f")},6:function(e,t){e.exports=n("6b7c")},7:function(e,t){e.exports=n("2b0e")},78:function(e,t,n){"use strict";n.r(t);var r=n(7),o=n.n(r),i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"msgbox-fade"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-message-box__wrapper",attrs:{tabindex:"-1",role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[n("div",{staticClass:"el-message-box",class:[e.customClass,e.center&&"el-message-box--center"]},[null!==e.title?n("div",{staticClass:"el-message-box__header"},[n("div",{staticClass:"el-message-box__title"},[e.icon&&e.center?n("div",{class:["el-message-box__status",e.icon]}):e._e(),n("span",[e._v(e._s(e.title))])]),e.showClose?n("button",{staticClass:"el-message-box__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:function(t){e.handleAction(e.distinguishCancelAndClose?"close":"cancel")},keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction(e.distinguishCancelAndClose?"close":"cancel")}}},[n("i",{staticClass:"el-message-box__close el-icon-close"})]):e._e()]):e._e(),n("div",{staticClass:"el-message-box__content"},[n("div",{staticClass:"el-message-box__container"},[e.icon&&!e.center&&""!==e.message?n("div",{class:["el-message-box__status",e.icon]}):e._e(),""!==e.message?n("div",{staticClass:"el-message-box__message"},[e._t("default",[e.dangerouslyUseHTMLString?n("p",{domProps:{innerHTML:e._s(e.message)}}):n("p",[e._v(e._s(e.message))])])],2):e._e()]),n("div",{directives:[{name:"show",rawName:"v-show",value:e.showInput,expression:"showInput"}],staticClass:"el-message-box__input"},[n("el-input",{ref:"input",attrs:{type:e.inputType,placeholder:e.inputPlaceholder},nativeOn:{keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleInputEnter(t)}},model:{value:e.inputValue,callback:function(t){e.inputValue=t},expression:"inputValue"}}),n("div",{staticClass:"el-message-box__errormsg",style:{visibility:e.editorErrorMessage?"visible":"hidden"}},[e._v(e._s(e.editorErrorMessage))])],1)]),n("div",{staticClass:"el-message-box__btns"},[e.showCancelButton?n("el-button",{class:[e.cancelButtonClasses],attrs:{loading:e.cancelButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("cancel")}},nativeOn:{click:function(t){e.handleAction("cancel")}}},[e._v("\n "+e._s(e.cancelButtonText||e.t("el.messagebox.cancel"))+"\n ")]):e._e(),n("el-button",{directives:[{name:"show",rawName:"v-show",value:e.showConfirmButton,expression:"showConfirmButton"}],ref:"confirm",class:[e.confirmButtonClasses],attrs:{loading:e.confirmButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("confirm")}},nativeOn:{click:function(t){e.handleAction("confirm")}}},[e._v("\n "+e._s(e.confirmButtonText||e.t("el.messagebox.confirm"))+"\n ")])],1)])])])},a=[];i._withStripped=!0;var s=n(13),l=n.n(s),u=n(6),c=n.n(u),f=n(10),d=n.n(f),p=n(14),h=n.n(p),v=n(2),m=n(20),y=n(47),g=n.n(y),b=void 0,_={success:"success",info:"info",warning:"warning",error:"error"},x={mixins:[l.a,c.a],props:{modal:{default:!0},lockScroll:{default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{default:!0},closeOnPressEscape:{default:!0},closeOnHashChange:{default:!0},center:{default:!1,type:Boolean},roundButton:{default:!1,type:Boolean}},components:{ElInput:d.a,ElButton:h.a},computed:{icon:function(){var e=this.type,t=this.iconClass;return t||(e&&_[e]?"el-icon-"+_[e]:"")},confirmButtonClasses:function(){return"el-button--primary "+this.confirmButtonClass},cancelButtonClasses:function(){return""+this.cancelButtonClass}},methods:{getSafeClose:function(){var e=this,t=this.uid;return function(){e.$nextTick((function(){t===e.uid&&e.doClose()}))}},doClose:function(){var e=this;this.visible&&(this.visible=!1,this._closing=!0,this.onClose&&this.onClose(),b.closeDialog(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose(),setTimeout((function(){e.action&&e.callback(e.action,e)})))},handleWrapperClick:function(){this.closeOnClickModal&&this.handleAction(this.distinguishCancelAndClose?"close":"cancel")},handleInputEnter:function(){if("textarea"!==this.inputType)return this.handleAction("confirm")},handleAction:function(e){("prompt"!==this.$type||"confirm"!==e||this.validate())&&(this.action=e,"function"===typeof this.beforeClose?(this.close=this.getSafeClose(),this.beforeClose(e,this,this.close)):this.doClose())},validate:function(){if("prompt"===this.$type){var e=this.inputPattern;if(e&&!e.test(this.inputValue||""))return this.editorErrorMessage=this.inputErrorMessage||Object(m["t"])("el.messagebox.error"),Object(v["addClass"])(this.getInputElement(),"invalid"),!1;var t=this.inputValidator;if("function"===typeof t){var n=t(this.inputValue);if(!1===n)return this.editorErrorMessage=this.inputErrorMessage||Object(m["t"])("el.messagebox.error"),Object(v["addClass"])(this.getInputElement(),"invalid"),!1;if("string"===typeof n)return this.editorErrorMessage=n,Object(v["addClass"])(this.getInputElement(),"invalid"),!1}}return this.editorErrorMessage="",Object(v["removeClass"])(this.getInputElement(),"invalid"),!0},getFirstFocus:function(){var e=this.$el.querySelector(".el-message-box__btns .el-button"),t=this.$el.querySelector(".el-message-box__btns .el-message-box__title");return e||t},getInputElement:function(){var e=this.$refs.input.$refs;return e.input||e.textarea},handleClose:function(){this.handleAction("close")}},watch:{inputValue:{immediate:!0,handler:function(e){var t=this;this.$nextTick((function(n){"prompt"===t.$type&&null!==e&&t.validate()}))}},visible:function(e){var t=this;e&&(this.uid++,"alert"!==this.$type&&"confirm"!==this.$type||this.$nextTick((function(){t.$refs.confirm.$el.focus()})),this.focusAfterClosed=document.activeElement,b=new g.a(this.$el,this.focusAfterClosed,this.getFirstFocus())),"prompt"===this.$type&&(e?setTimeout((function(){t.$refs.input&&t.$refs.input.$el&&t.getInputElement().focus()}),500):(this.editorErrorMessage="",Object(v["removeClass"])(this.getInputElement(),"invalid")))}},mounted:function(){var e=this;this.$nextTick((function(){e.closeOnHashChange&&window.addEventListener("hashchange",e.close)}))},beforeDestroy:function(){this.closeOnHashChange&&window.removeEventListener("hashchange",this.close),setTimeout((function(){b.closeDialog()}))},data:function(){return{uid:1,title:void 0,message:"",type:"",iconClass:"",customClass:"",showInput:!1,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,action:"",confirmButtonText:"",cancelButtonText:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonClass:"",confirmButtonDisabled:!1,cancelButtonClass:"",editorErrorMessage:null,callback:null,dangerouslyUseHTMLString:!1,focusAfterClosed:null,isOnComposition:!1,distinguishCancelAndClose:!1}}},w=x,C=n(0),S=Object(C["a"])(w,i,a,!1,null,null,null);S.options.__file="packages/message-box/src/main.vue";var O=S.exports,E=n(9),k=n.n(E),j=n(23),$="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A={title:null,message:"",type:"",iconClass:"",showInput:!1,showClose:!0,modalFade:!0,lockScroll:!0,closeOnClickModal:!0,closeOnPressEscape:!0,closeOnHashChange:!0,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,confirmButtonPosition:"right",confirmButtonHighlight:!1,cancelButtonHighlight:!1,confirmButtonText:"",cancelButtonText:"",confirmButtonClass:"",cancelButtonClass:"",customClass:"",beforeClose:null,dangerouslyUseHTMLString:!1,center:!1,roundButton:!1,distinguishCancelAndClose:!1},T=o.a.extend(O),P=void 0,L=void 0,M=[],R=function(e){if(P){var t=P.callback;"function"===typeof t&&(L.showInput?t(L.inputValue,e):t(e)),P.resolve&&("confirm"===e?L.showInput?P.resolve({value:L.inputValue,action:e}):P.resolve(e):!P.reject||"cancel"!==e&&"close"!==e||P.reject(e))}},N=function(){L=new T({el:document.createElement("div")}),L.callback=R},I=function e(){if(L||N(),L.action="",(!L.visible||L.closeTimer)&&M.length>0){P=M.shift();var t=P.options;for(var n in t)t.hasOwnProperty(n)&&(L[n]=t[n]);void 0===t.callback&&(L.callback=R);var r=L.callback;L.callback=function(t,n){r(t,n),e()},Object(j["isVNode"])(L.message)?(L.$slots.default=[L.message],L.message=null):delete L.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach((function(e){void 0===L[e]&&(L[e]=!0)})),document.body.appendChild(L.$el),o.a.nextTick((function(){L.visible=!0}))}},F=function e(t,n){if(!o.a.prototype.$isServer){if("string"===typeof t||Object(j["isVNode"])(t)?(t={message:t},"string"===typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!n&&(n=t.callback),"undefined"!==typeof Promise)return new Promise((function(r,o){M.push({options:k()({},A,e.defaults,t),callback:n,resolve:r,reject:o}),I()}));M.push({options:k()({},A,e.defaults,t),callback:n}),I()}};F.setDefaults=function(e){F.defaults=e},F.alert=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":$(t))?(n=t,t=""):void 0===t&&(t=""),F(k()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},n))},F.confirm=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":$(t))?(n=t,t=""):void 0===t&&(t=""),F(k()({title:t,message:e,$type:"confirm",showCancelButton:!0},n))},F.prompt=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":$(t))?(n=t,t=""):void 0===t&&(t=""),F(k()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},n))},F.close=function(){L.doClose(),L.visible=!1,M=[],P=null};var z=F;t["default"]=z},9:function(e,t){e.exports=n("7f4d")}})},7149:function(e,t,n){"use strict";var r=n("23e7"),o=n("d066"),i=n("c430"),a=n("d256"),s=n("4738").CONSTRUCTOR,l=n("cdf9"),u=o("Promise"),c=i&&!s;r({target:"Promise",stat:!0,forced:i||s},{resolve:function(e){return l(c&&this===u?a:this,e)}})},"722f":function(e,t,n){"use strict";t.__esModule=!0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n("e452"),i=a(o);function a(e){return e&&e.__esModule?e:{default:e}}var s,l=l||{};l.Dialog=function(e,t,n){var o=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"===typeof t?this.focusAfterClosed=document.getElementById(t):"object"===("undefined"===typeof t?"undefined":r(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"===typeof n?this.focusFirst=document.getElementById(n):"object"===("undefined"===typeof n?"undefined":r(n))?this.focusFirst=n:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():i.default.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,s=function(e){o.trapFocus(e)},this.addListeners()},l.Dialog.prototype.addListeners=function(){document.addEventListener("focus",s,!0)},l.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",s,!0)},l.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout((function(){e.focusAfterClosed.focus()}))},l.Dialog.prototype.trapFocus=function(e){i.default.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(i.default.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&i.default.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))},t.default=l.Dialog},7418:function(e,t){t.f=Object.getOwnPropertySymbols},"76b9":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=97)}({0:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},97:function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[e._t("default")],2)},o=[];r._withStripped=!0;var i={name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},a=i,s=n(0),l=Object(s["a"])(a,r,o,!1,null,null,null);l.options.__file="packages/breadcrumb/src/breadcrumb.vue";var u=l.exports;u.install=function(e){e.component(u.name,u)};t["default"]=u}})},7839:function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"785a":function(e,t,n){var r=n("cc12"),o=r("span").classList,i=o&&o.constructor&&o.constructor.prototype;e.exports=i===Object.prototype?void 0:i},"7a77":function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},"7aac":function(e,t,n){"use strict";var r=n("c532");e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,a){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"7b0b":function(e,t,n){var r=n("da84"),o=n("1d80"),i=r.Object;e.exports=function(e){return i(o(e))}},"7b3e":function(e,t,n){"use strict";var r,o=n("a3de"); +function n(e){var t=Number(e.version.split(".")[0]);if(t>=2)e.mixin({beforeCreate:r});else{var n=e.prototype._init;e.prototype._init=function(e){void 0===e&&(e={}),e.init=e.init?[r].concat(e.init):r,n.call(this,e)}}function r(){var e=this.$options;e.store?this.$store="function"===typeof e.store?e.store():e.store:e.parent&&e.parent.$store&&(this.$store=e.parent.$store)}}var r="undefined"!==typeof window?window:"undefined"!==typeof e?e:{},o=r.__VUE_DEVTOOLS_GLOBAL_HOOK__;function i(e){o&&(e._devtoolHook=o,o.emit("vuex:init",e),o.on("vuex:travel-to-state",(function(t){e.replaceState(t)})),e.subscribe((function(e,t){o.emit("vuex:mutation",e,t)}),{prepend:!0}),e.subscribeAction((function(e,t){o.emit("vuex:action",e,t)}),{prepend:!0}))}function a(e,t){return e.filter(t)[0]}function s(e,t){if(void 0===t&&(t=[]),null===e||"object"!==typeof e)return e;var n=a(t,(function(t){return t.original===e}));if(n)return n.copy;var r=Array.isArray(e)?[]:{};return t.push({original:e,copy:r}),Object.keys(e).forEach((function(n){r[n]=s(e[n],t)})),r}function l(e,t){Object.keys(e).forEach((function(n){return t(e[n],n)}))}function u(e){return null!==e&&"object"===typeof e}function c(e){return e&&"function"===typeof e.then}function f(e,t){return function(){return e(t)}}var d=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"===typeof n?n():n)||{}},p={namespaced:{configurable:!0}};p.namespaced.get=function(){return!!this._rawModule.namespaced},d.prototype.addChild=function(e,t){this._children[e]=t},d.prototype.removeChild=function(e){delete this._children[e]},d.prototype.getChild=function(e){return this._children[e]},d.prototype.hasChild=function(e){return e in this._children},d.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},d.prototype.forEachChild=function(e){l(this._children,e)},d.prototype.forEachGetter=function(e){this._rawModule.getters&&l(this._rawModule.getters,e)},d.prototype.forEachAction=function(e){this._rawModule.actions&&l(this._rawModule.actions,e)},d.prototype.forEachMutation=function(e){this._rawModule.mutations&&l(this._rawModule.mutations,e)},Object.defineProperties(d.prototype,p);var h=function(e){this.register([],e,!1)};function v(e,t,n){if(t.update(n),n.modules)for(var r in n.modules){if(!t.getChild(r))return void 0;v(e.concat(r),t.getChild(r),n.modules[r])}}h.prototype.get=function(e){return e.reduce((function(e,t){return e.getChild(t)}),this.root)},h.prototype.getNamespace=function(e){var t=this.root;return e.reduce((function(e,n){return t=t.getChild(n),e+(t.namespaced?n+"/":"")}),"")},h.prototype.update=function(e){v([],this.root,e)},h.prototype.register=function(e,t,n){var r=this;void 0===n&&(n=!0);var o=new d(t,n);if(0===e.length)this.root=o;else{var i=this.get(e.slice(0,-1));i.addChild(e[e.length-1],o)}t.modules&&l(t.modules,(function(t,o){r.register(e.concat(o),t,n)}))},h.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1],r=t.getChild(n);r&&r.runtime&&t.removeChild(n)},h.prototype.isRegistered=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];return!!t&&t.hasChild(n)};var m;var y=function(e){var t=this;void 0===e&&(e={}),!m&&"undefined"!==typeof window&&window.Vue&&T(window.Vue);var n=e.plugins;void 0===n&&(n=[]);var r=e.strict;void 0===r&&(r=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new h(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new m,this._makeLocalGettersCache=Object.create(null);var o=this,a=this,s=a.dispatch,l=a.commit;this.dispatch=function(e,t){return s.call(o,e,t)},this.commit=function(e,t,n){return l.call(o,e,t,n)},this.strict=r;var u=this._modules.root.state;w(this,u,[],this._modules.root),x(this,u),n.forEach((function(e){return e(t)}));var c=void 0!==e.devtools?e.devtools:m.config.devtools;c&&i(this)},g={state:{configurable:!0}};function b(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function _(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;w(e,n,[],e._modules.root,!0),x(e,n,t)}function x(e,t,n){var r=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var o=e._wrappedGetters,i={};l(o,(function(t,n){i[n]=f(t,e),Object.defineProperty(e.getters,n,{get:function(){return e._vm[n]},enumerable:!0})}));var a=m.config.silent;m.config.silent=!0,e._vm=new m({data:{$$state:t},computed:i}),m.config.silent=a,e.strict&&j(e),r&&(n&&e._withCommit((function(){r._data.$$state=null})),m.nextTick((function(){return r.$destroy()})))}function w(e,t,n,r,o){var i=!n.length,a=e._modules.getNamespace(n);if(r.namespaced&&(e._modulesNamespaceMap[a],e._modulesNamespaceMap[a]=r),!i&&!o){var s=$(t,n.slice(0,-1)),l=n[n.length-1];e._withCommit((function(){m.set(s,l,r.state)}))}var u=r.context=C(e,a,n);r.forEachMutation((function(t,n){var r=a+n;O(e,r,t,u)})),r.forEachAction((function(t,n){var r=t.root?n:a+n,o=t.handler||t;E(e,r,o,u)})),r.forEachGetter((function(t,n){var r=a+n;k(e,r,t,u)})),r.forEachChild((function(r,i){w(e,t,n.concat(i),r,o)}))}function C(e,t,n){var r=""===t,o={dispatch:r?e.dispatch:function(n,r,o){var i=A(n,r,o),a=i.payload,s=i.options,l=i.type;return s&&s.root||(l=t+l),e.dispatch(l,a)},commit:r?e.commit:function(n,r,o){var i=A(n,r,o),a=i.payload,s=i.options,l=i.type;s&&s.root||(l=t+l),e.commit(l,a,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return e.getters}:function(){return S(e,t)}},state:{get:function(){return $(e.state,n)}}}),o}function S(e,t){if(!e._makeLocalGettersCache[t]){var n={},r=t.length;Object.keys(e.getters).forEach((function(o){if(o.slice(0,r)===t){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return e.getters[o]},enumerable:!0})}})),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}function O(e,t,n,r){var o=e._mutations[t]||(e._mutations[t]=[]);o.push((function(t){n.call(e,r.state,t)}))}function E(e,t,n,r){var o=e._actions[t]||(e._actions[t]=[]);o.push((function(t){var o=n.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},t);return c(o)||(o=Promise.resolve(o)),e._devtoolHook?o.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):o}))}function k(e,t,n,r){e._wrappedGetters[t]||(e._wrappedGetters[t]=function(e){return n(r.state,r.getters,e.state,e.getters)})}function j(e){e._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}function $(e,t){return t.reduce((function(e,t){return e[t]}),e)}function A(e,t,n){return u(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}function T(e){m&&e===m||(m=e,n(m))}g.state.get=function(){return this._vm._data.$$state},g.state.set=function(e){0},y.prototype.commit=function(e,t,n){var r=this,o=A(e,t,n),i=o.type,a=o.payload,s=(o.options,{type:i,payload:a}),l=this._mutations[i];l&&(this._withCommit((function(){l.forEach((function(e){e(a)}))})),this._subscribers.slice().forEach((function(e){return e(s,r.state)})))},y.prototype.dispatch=function(e,t){var n=this,r=A(e,t),o=r.type,i=r.payload,a={type:o,payload:i},s=this._actions[o];if(s){try{this._actionSubscribers.slice().filter((function(e){return e.before})).forEach((function(e){return e.before(a,n.state)}))}catch(u){0}var l=s.length>1?Promise.all(s.map((function(e){return e(i)}))):s[0](i);return new Promise((function(e,t){l.then((function(t){try{n._actionSubscribers.filter((function(e){return e.after})).forEach((function(e){return e.after(a,n.state)}))}catch(u){0}e(t)}),(function(e){try{n._actionSubscribers.filter((function(e){return e.error})).forEach((function(t){return t.error(a,n.state,e)}))}catch(u){0}t(e)}))}))}},y.prototype.subscribe=function(e,t){return b(e,this._subscribers,t)},y.prototype.subscribeAction=function(e,t){var n="function"===typeof e?{before:e}:e;return b(n,this._actionSubscribers,t)},y.prototype.watch=function(e,t,n){var r=this;return this._watcherVM.$watch((function(){return e(r.state,r.getters)}),t,n)},y.prototype.replaceState=function(e){var t=this;this._withCommit((function(){t._vm._data.$$state=e}))},y.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"===typeof e&&(e=[e]),this._modules.register(e,t),w(this,this.state,e,this._modules.get(e),n.preserveState),x(this,this.state)},y.prototype.unregisterModule=function(e){var t=this;"string"===typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit((function(){var n=$(t.state,e.slice(0,-1));m.delete(n,e[e.length-1])})),_(this)},y.prototype.hasModule=function(e){return"string"===typeof e&&(e=[e]),this._modules.isRegistered(e)},y.prototype.hotUpdate=function(e){this._modules.update(e),_(this,!0)},y.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(y.prototype,g);var P=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var r=H(this.$store,"mapState",e);if(!r)return;t=r.context.state,n=r.context.getters}return"function"===typeof o?o.call(this,t,n):t[o]},n[r].vuex=!0})),n})),L=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var r=this.$store.commit;if(e){var i=H(this.$store,"mapMutations",e);if(!i)return;r=i.context.commit}return"function"===typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n})),M=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;o=e+o,n[r]=function(){if(!e||H(this.$store,"mapGetters",e))return this.$store.getters[o]},n[r].vuex=!0})),n})),R=z((function(e,t){var n={};return I(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var r=this.$store.dispatch;if(e){var i=H(this.$store,"mapActions",e);if(!i)return;r=i.context.dispatch}return"function"===typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n})),N=function(e){return{mapState:P.bind(null,e),mapGetters:M.bind(null,e),mapMutations:L.bind(null,e),mapActions:R.bind(null,e)}};function I(e){return F(e)?Array.isArray(e)?e.map((function(e){return{key:e,val:e}})):Object.keys(e).map((function(t){return{key:t,val:e[t]}})):[]}function F(e){return Array.isArray(e)||u(e)}function z(e){return function(t,n){return"string"!==typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function H(e,t,n){var r=e._modulesNamespaceMap[n];return r}function B(e){void 0===e&&(e={});var t=e.collapsed;void 0===t&&(t=!0);var n=e.filter;void 0===n&&(n=function(e,t,n){return!0});var r=e.transformer;void 0===r&&(r=function(e){return e});var o=e.mutationTransformer;void 0===o&&(o=function(e){return e});var i=e.actionFilter;void 0===i&&(i=function(e,t){return!0});var a=e.actionTransformer;void 0===a&&(a=function(e){return e});var l=e.logMutations;void 0===l&&(l=!0);var u=e.logActions;void 0===u&&(u=!0);var c=e.logger;return void 0===c&&(c=console),function(e){var f=s(e.state);"undefined"!==typeof c&&(l&&e.subscribe((function(e,i){var a=s(i);if(n(e,f,a)){var l=V(),u=o(e),d="mutation "+e.type+l;D(c,d,t),c.log("%c prev state","color: #9E9E9E; font-weight: bold",r(f)),c.log("%c mutation","color: #03A9F4; font-weight: bold",u),c.log("%c next state","color: #4CAF50; font-weight: bold",r(a)),W(c)}f=a})),u&&e.subscribeAction((function(e,n){if(i(e,n)){var r=V(),o=a(e),s="action "+e.type+r;D(c,s,t),c.log("%c action","color: #03A9F4; font-weight: bold",o),W(c)}})))}}function D(e,t,n){var r=n?e.groupCollapsed:e.group;try{r.call(e,t)}catch(o){e.log(t)}}function W(e){try{e.groupEnd()}catch(t){e.log("—— log end ——")}}function V(){var e=new Date;return" @ "+q(e.getHours(),2)+":"+q(e.getMinutes(),2)+":"+q(e.getSeconds(),2)+"."+q(e.getMilliseconds(),3)}function U(e,t){return new Array(t+1).join(e)}function q(e,t){return U("0",t-e.toString().length)+e}var G={Store:y,install:T,version:"3.6.2",mapState:P,mapMutations:L,mapGetters:M,mapActions:R,createNamespacedHelpers:N,createLogger:B};t["a"]=G}).call(this,n("c8ba"))},"30b5":function(e,t,n){"use strict";var r=n("c532");function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(r.isURLSearchParams(t))i=t.toString();else{var a=[];r.forEach(t,(function(e,t){null!==e&&"undefined"!==typeof e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(o(t)+"="+o(e))})))})),i=a.join("&")}if(i){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}},"342f":function(e,t,n){var r=n("d066");e.exports=r("navigator","userAgent")||""},3529:function(e,t,n){"use strict";var r=n("23e7"),o=n("c65b"),i=n("59ed"),a=n("f069"),s=n("e667"),l=n("2266"),u=n("5eed");r({target:"Promise",stat:!0,forced:u},{race:function(e){var t=this,n=a.f(t),r=n.reject,u=s((function(){var a=i(t.resolve);l(e,(function(e){o(a,t,e).then(n.resolve,r)}))}));return u.error&&r(u.value),n.promise}})},"35a1":function(e,t,n){var r=n("f5df"),o=n("dc4a"),i=n("3f8c"),a=n("b622"),s=a("iterator");e.exports=function(e){if(void 0!=e)return o(e,s)||o(e,"@@iterator")||i[r(e)]}},"37e8":function(e,t,n){var r=n("83ab"),o=n("aed9"),i=n("9bf2"),a=n("825a"),s=n("fc6a"),l=n("df75");t.f=r&&!o?Object.defineProperties:function(e,t){a(e);var n,r=s(t),o=l(t),u=o.length,c=0;while(u>c)i.f(e,n=o[c++],r[n]);return e}},"387f":function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},"38a0":function(e,t,n){},3934:function(e,t,n){"use strict";var r=n("c532");e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return function(){return!0}}()},"3a9b":function(e,t,n){var r=n("e330");e.exports=r({}.isPrototypeOf)},"3bbe":function(e,t,n){var r=n("da84"),o=n("1626"),i=r.String,a=r.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+i(e)+" as a prototype")}},"3c4e":function(e,t,n){"use strict";var r=function(e){return o(e)&&!i(e)};function o(e){return!!e&&"object"===typeof e}function i(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||l(e)}var a="function"===typeof Symbol&&Symbol.for,s=a?Symbol.for("react.element"):60103;function l(e){return e.$$typeof===s}function u(e){return Array.isArray(e)?[]:{}}function c(e,t){var n=t&&!0===t.clone;return n&&r(e)?p(u(e),e,t):e}function f(e,t,n){var o=e.slice();return t.forEach((function(t,i){"undefined"===typeof o[i]?o[i]=c(t,n):r(t)?o[i]=p(e[i],t,n):-1===e.indexOf(t)&&o.push(c(t,n))})),o}function d(e,t,n){var o={};return r(e)&&Object.keys(e).forEach((function(t){o[t]=c(e[t],n)})),Object.keys(t).forEach((function(i){r(t[i])&&e[i]?o[i]=p(e[i],t[i],n):o[i]=c(t[i],n)})),o}function p(e,t,n){var r=Array.isArray(t),o=Array.isArray(e),i=n||{arrayMerge:f},a=r===o;if(a){if(r){var s=i.arrayMerge||f;return s(e,t,n)}return d(e,t,n)}return c(t,n)}p.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce((function(e,n){return p(e,n,t)}))};var h=p;e.exports=h},"3ca3":function(e,t,n){"use strict";var r=n("6547").charAt,o=n("577e"),i=n("69f3"),a=n("7dd0"),s="String Iterator",l=i.set,u=i.getterFor(s);a(String,"String",(function(e){l(this,{type:s,string:o(e),index:0})}),(function(){var e,t=u(this),n=t.string,o=t.index;return o>=n.length?{value:void 0,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},"3f8c":function(e,t){e.exports={}},4010:function(e,t,n){"use strict";t.__esModule=!0,t.removeResizeListener=t.addResizeListener=void 0;var r=n("6dd8"),o=a(r),i=n("9619");function a(e){return e&&e.__esModule?e:{default:e}}var s="undefined"===typeof window,l=function(e){var t=e,n=Array.isArray(t),r=0;for(t=n?t:t[Symbol.iterator]();;){var o;if(n){if(r>=t.length)break;o=t[r++]}else{if(r=t.next(),r.done)break;o=r.value}var i=o,a=i.target.__resizeListeners__||[];a.length&&a.forEach((function(e){e()}))}};t.addResizeListener=function(e,t){s||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new o.default((0,i.debounce)(16,l)),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},"40d5":function(e,t,n){var r=n("d039");e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},"417f":function(e,t,n){"use strict";t.__esModule=!0;var r=n("2b0e"),o=a(r),i=n("5924");function a(e){return e&&e.__esModule?e:{default:e}}var s=[],l="@@clickoutsideContext",u=void 0,c=0;function f(e,t,n){return function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(n&&n.context&&r.target&&o.target)||e.contains(r.target)||e.contains(o.target)||e===r.target||n.context.popperElm&&(n.context.popperElm.contains(r.target)||n.context.popperElm.contains(o.target))||(t.expression&&e[l].methodName&&n.context[e[l].methodName]?n.context[e[l].methodName]():e[l].bindingFn&&e[l].bindingFn())}}!o.default.prototype.$isServer&&(0,i.on)(document,"mousedown",(function(e){return u=e})),!o.default.prototype.$isServer&&(0,i.on)(document,"mouseup",(function(e){s.forEach((function(t){return t[l].documentHandler(e,u)}))})),t.default={bind:function(e,t,n){s.push(e);var r=c++;e[l]={id:r,documentHandler:f(e,t,n),methodName:t.expression,bindingFn:t.value}},update:function(e,t,n){e[l].documentHandler=f(e,t,n),e[l].methodName=t.expression,e[l].bindingFn=t.value},unbind:function(e){for(var t=s.length,n=0;n=51&&/native code/.test(e))return!1;var n=new o((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))},i=n.constructor={};return i[p]=r,h=n.then((function(){}))instanceof r,!h||!t&&u&&!v}));e.exports={CONSTRUCTOR:m,REJECTION_EVENT:v,SUBCLASSING:h}},4840:function(e,t,n){var r=n("825a"),o=n("5087"),i=n("b622"),a=i("species");e.exports=function(e,t){var n,i=r(e).constructor;return void 0===i||void 0==(n=r(i)[a])?t:o(n)}},"485a":function(e,t,n){var r=n("da84"),o=n("c65b"),i=n("1626"),a=n("861d"),s=r.TypeError;e.exports=function(e,t){var n,r;if("string"===t&&i(n=e.toString)&&!a(r=o(n,e)))return r;if(i(n=e.valueOf)&&!a(r=o(n,e)))return r;if("string"!==t&&i(n=e.toString)&&!a(r=o(n,e)))return r;throw s("Can't convert object to primitive value")}},4897:function(e,t,n){"use strict";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var r=n("f0d9"),o=f(r),i=n("2b0e"),a=f(i),s=n("3c4e"),l=f(s),u=n("9d7e"),c=f(u);function f(e){return e&&e.__esModule?e:{default:e}}var d=(0,c.default)(a.default),p=o.default,h=!1,v=function(){var e=Object.getPrototypeOf(this||a.default).$t;if("function"===typeof e&&a.default.locale)return h||(h=!0,a.default.locale(a.default.config.lang,(0,l.default)(p,a.default.locale(a.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},m=t.t=function(e,t){var n=v.apply(this,arguments);if(null!==n&&void 0!==n)return n;for(var r=e.split("."),o=p,i=0,a=r.length;i0){var r=t[t.length-1];if(r.id===e){if(r.modalClass){var o=r.modalClass.trim().split(/\s+/);o.forEach((function(e){return(0,i.removeClass)(n,e)}))}t.pop(),t.length>0&&(n.style.zIndex=t[t.length-1].zIndex)}else for(var a=t.length-1;a>=0;a--)if(t[a].id===e){t.splice(a,1);break}}0===t.length&&(this.modalFade&&(0,i.addClass)(n,"v-modal-leave"),setTimeout((function(){0===t.length&&(n.parentNode&&n.parentNode.removeChild(n),n.style.display="none",d.modalDom=void 0),(0,i.removeClass)(n,"v-modal-leave")}),200))}};Object.defineProperty(d,"zIndex",{configurable:!0,get:function(){return l||(u=u||(o.default.prototype.$ELEMENT||{}).zIndex||2e3,l=!0),u},set:function(e){u=e}});var p=function(){if(!o.default.prototype.$isServer&&d.modalStack.length>0){var e=d.modalStack[d.modalStack.length-1];if(!e)return;var t=d.getInstance(e.id);return t}};o.default.prototype.$isServer||window.addEventListener("keydown",(function(e){if(27===e.keyCode){var t=p();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}})),t.default=d},"4d64":function(e,t,n){var r=n("fc6a"),o=n("23cb"),i=n("07fa"),a=function(e){return function(t,n,a){var s,l=r(t),u=i(l),c=o(a,u);if(e&&n!=n){while(u>c)if(s=l[c++],s!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},5087:function(e,t,n){var r=n("da84"),o=n("68ee"),i=n("0d51"),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a constructor")}},"50c4":function(e,t,n){var r=n("5926"),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},5128:function(e,t,n){"use strict";t.__esModule=!0,t.PopupManager=void 0;var r=n("2b0e"),o=d(r),i=n("7f4d"),a=d(i),s=n("4b26"),l=d(s),u=n("e62d"),c=d(u),f=n("5924");function d(e){return e&&e.__esModule?e:{default:e}}var p=1,h=void 0;t.default={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId="popup-"+p++,l.default.register(this._popupId,this)},beforeDestroy:function(){l.default.deregister(this._popupId),l.default.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,o.default.nextTick((function(){t.open()})))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var n=(0,a.default)({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var r=Number(n.openDelay);r>0?this._openTimer=setTimeout((function(){t._openTimer=null,t.doOpen(n)}),r):this.doOpen(n)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,n=e.modal,r=e.zIndex;if(r&&(l.default.zIndex=r),n&&(this._closing&&(l.default.closeModal(this._popupId),this._closing=!1),l.default.openModal(this._popupId,l.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,f.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,f.getStyle)(document.body,"paddingRight"),10)),h=(0,c.default)();var o=document.documentElement.clientHeight0&&(o||"scroll"===i)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+h+"px"),(0,f.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=l.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout((function(){e._closeTimer=null,e.doClose()}),t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){l.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,f.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=l.default},5270:function(e,t,n){"use strict";var r=n("c532"),o=n("c401"),i=n("2e67"),a=n("2444");function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){s(e),e.headers=e.headers||{},e.data=o.call(e,e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]}));var t=e.adapter||a.adapter;return t(e).then((function(t){return s(e),t.data=o.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(s(e),t&&t.response&&(t.response.data=o.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},5466:function(e,t,n){},5692:function(e,t,n){var r=n("c430"),o=n("c6cd");(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.5",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.5/LICENSE",source:"https://github.com/zloirock/core-js"})},"56ef":function(e,t,n){var r=n("d066"),o=n("e330"),i=n("241c"),a=n("7418"),s=n("825a"),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=a.f;return n?l(t,n(e)):t}},"577e":function(e,t,n){var r=n("da84"),o=n("f5df"),i=r.String;e.exports=function(e){if("Symbol"===o(e))throw TypeError("Cannot convert a Symbol value to a string");return i(e)}},5924:function(e,t,n){"use strict";t.__esModule=!0,t.isInContainer=t.getScrollContainer=t.isScroll=t.getStyle=t.once=t.off=t.on=void 0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.hasClass=v,t.addClass=m,t.removeClass=y,t.setStyle=b;var o=n("2b0e"),i=a(o);function a(e){return e&&e.__esModule?e:{default:e}}var s=i.default.prototype.$isServer,l=/([\:\-\_]+(.))/g,u=/^moz([A-Z])/,c=s?0:Number(document.documentMode),f=function(e){return(e||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")},d=function(e){return e.replace(l,(function(e,t,n,r){return r?n.toUpperCase():n})).replace(u,"Moz$1")},p=t.on=function(){return!s&&document.addEventListener?function(e,t,n){e&&t&&n&&e.addEventListener(t,n,!1)}:function(e,t,n){e&&t&&n&&e.attachEvent("on"+t,n)}}(),h=t.off=function(){return!s&&document.removeEventListener?function(e,t,n){e&&t&&e.removeEventListener(t,n,!1)}:function(e,t,n){e&&t&&e.detachEvent("on"+t,n)}}();t.once=function(e,t,n){var r=function r(){n&&n.apply(this,arguments),h(e,t,r)};p(e,t,r)};function v(e,t){if(!e||!t)return!1;if(-1!==t.indexOf(" "))throw new Error("className should not contain space.");return e.classList?e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")>-1}function m(e,t){if(e){for(var n=e.className,r=(t||"").split(" "),o=0,i=r.length;or.top&&n.right>r.left&&n.left0?r:n)(t)}},"597f":function(e,t){e.exports=function(e,t,n,r){var o,i=0;function a(){var a=this,s=Number(new Date)-i,l=arguments;function u(){i=Number(new Date),n.apply(a,l)}function c(){o=void 0}r&&!o&&u(),o&&clearTimeout(o),void 0===r&&s>e?u():!0!==t&&(o=setTimeout(r?c:u,void 0===r?e-s:e))}return"boolean"!==typeof t&&(r=n,n=t,t=void 0),a}},"59ed":function(e,t,n){var r=n("da84"),o=n("1626"),i=n("0d51"),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a function")}},"5c6c":function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},"5e77":function(e,t,n){var r=n("83ab"),o=n("1a2d"),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},"5e7e":function(e,t,n){"use strict";var r,o,i,a,s=n("23e7"),l=n("c430"),u=n("605d"),c=n("da84"),f=n("c65b"),d=n("cb2d"),p=n("d2bb"),h=n("d44e"),v=n("2626"),m=n("59ed"),y=n("1626"),g=n("861d"),b=n("19aa"),_=n("4840"),x=n("2cf4").set,w=n("b575"),C=n("44de"),S=n("e667"),O=n("01b4"),E=n("69f3"),k=n("d256"),j=n("4738"),$=n("f069"),A="Promise",T=j.CONSTRUCTOR,P=j.REJECTION_EVENT,L=j.SUBCLASSING,M=E.getterFor(A),R=E.set,N=k&&k.prototype,I=k,F=N,z=c.TypeError,H=c.document,B=c.process,D=$.f,W=D,V=!!(H&&H.createEvent&&c.dispatchEvent),U="unhandledrejection",q="rejectionhandled",G=0,K=1,X=2,Y=1,J=2,Q=function(e){var t;return!(!g(e)||!y(t=e.then))&&t},Z=function(e,t){var n,r,o,i=t.value,a=t.state==K,s=a?e.ok:e.fail,l=e.resolve,u=e.reject,c=e.domain;try{s?(a||(t.rejection===J&&oe(t),t.rejection=Y),!0===s?n=i:(c&&c.enter(),n=s(i),c&&(c.exit(),o=!0)),n===e.promise?u(z("Promise-chain cycle")):(r=Q(n))?f(r,n,l,u):l(n)):u(i)}catch(d){c&&!o&&c.exit(),u(d)}},ee=function(e,t){e.notified||(e.notified=!0,w((function(){var n,r=e.reactions;while(n=r.get())Z(n,e);e.notified=!1,t&&!e.rejection&&ne(e)})))},te=function(e,t,n){var r,o;V?(r=H.createEvent("Event"),r.promise=t,r.reason=n,r.initEvent(e,!1,!0),c.dispatchEvent(r)):r={promise:t,reason:n},!P&&(o=c["on"+e])?o(r):e===U&&C("Unhandled promise rejection",n)},ne=function(e){f(x,c,(function(){var t,n=e.facade,r=e.value,o=re(e);if(o&&(t=S((function(){u?B.emit("unhandledRejection",r,n):te(U,n,r)})),e.rejection=u||re(e)?J:Y,t.error))throw t.value}))},re=function(e){return e.rejection!==Y&&!e.parent},oe=function(e){f(x,c,(function(){var t=e.facade;u?B.emit("rejectionHandled",t):te(q,t,e.value)}))},ie=function(e,t,n){return function(r){e(t,r,n)}},ae=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=X,ee(e,!0))},se=function(e,t,n){if(!e.done){e.done=!0,n&&(e=n);try{if(e.facade===t)throw z("Promise can't be resolved itself");var r=Q(t);r?w((function(){var n={done:!1};try{f(r,t,ie(se,n,e),ie(ae,n,e))}catch(o){ae(n,o,e)}})):(e.value=t,e.state=K,ee(e,!1))}catch(o){ae({done:!1},o,e)}}};if(T&&(I=function(e){b(this,F),m(e),f(r,this);var t=M(this);try{e(ie(se,t),ie(ae,t))}catch(n){ae(t,n)}},F=I.prototype,r=function(e){R(this,{type:A,done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:G,value:void 0})},r.prototype=d(F,"then",(function(e,t){var n=M(this),r=D(_(this,I));return n.parent=!0,r.ok=!y(e)||e,r.fail=y(t)&&t,r.domain=u?B.domain:void 0,n.state==G?n.reactions.add(r):w((function(){Z(r,n)})),r.promise})),o=function(){var e=new r,t=M(e);this.promise=e,this.resolve=ie(se,t),this.reject=ie(ae,t)},$.f=D=function(e){return e===I||e===i?new o(e):W(e)},!l&&y(k)&&N!==Object.prototype)){a=N.then,L||d(N,"then",(function(e,t){var n=this;return new I((function(e,t){f(a,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete N.constructor}catch(le){}p&&p(N,F)}s({global:!0,constructor:!0,wrap:!0,forced:T},{Promise:I}),h(I,A,!1,!0),v(A)},"5eed":function(e,t,n){var r=n("d256"),o=n("1c7e"),i=n("4738").CONSTRUCTOR;e.exports=i||!o((function(e){r.all(e).then(void 0,(function(){}))}))},"5f02":function(e,t,n){"use strict";e.exports=function(e){return"object"===typeof e&&!0===e.isAxiosError}},"605d":function(e,t,n){var r=n("c6b6"),o=n("da84");e.exports="process"==r(o.process)},6069:function(e,t){e.exports="object"==typeof window&&"object"!=typeof Deno},"60da":function(e,t,n){"use strict";var r=n("83ab"),o=n("e330"),i=n("c65b"),a=n("d039"),s=n("df75"),l=n("7418"),u=n("d1e7"),c=n("7b0b"),f=n("44ad"),d=Object.assign,p=Object.defineProperty,h=o([].concat);e.exports=!d||a((function(){if(r&&1!==d({b:1},d(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=d({},e)[n]||s(d({},t)).join("")!=o}))?function(e,t){var n=c(e),o=arguments.length,a=1,d=l.f,p=u.f;while(o>a){var v,m=f(arguments[a++]),y=d?h(s(m),d(m)):s(m),g=y.length,b=0;while(g>b)v=y[b++],r&&!i(p,m,v)||(n[v]=m[v])}return n}:d},6167:function(e,t,n){"use strict";var r,o;"function"===typeof Symbol&&Symbol.iterator;(function(i,a){r=a,o="function"===typeof r?r.call(t,n,t,e):r,void 0===o||(e.exports=o)})(0,(function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function n(e,n,r){this._reference=e.jquery?e[0]:e,this.state={};var o="undefined"===typeof n||null===n,i=n&&"[object Object]"===Object.prototype.toString.call(n);return this._popper=o||i?this.parse(i?n:{}):n.jquery?n[0]:n,this._options=Object.assign({},t,r),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),f(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function r(t){var n=t.style.display,r=t.style.visibility;t.style.display="block",t.style.visibility="hidden";t.offsetWidth;var o=e.getComputedStyle(t),i=parseFloat(o.marginTop)+parseFloat(o.marginBottom),a=parseFloat(o.marginLeft)+parseFloat(o.marginRight),s={width:t.offsetWidth+a,height:t.offsetHeight+i};return t.style.display=n,t.style.visibility=r,s}function o(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,(function(e){return t[e]}))}function i(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var n,r=0;for(n in e){if(e[n]===t)return r;r++}return null}function s(t,n){var r=e.getComputedStyle(t,null);return r[n]}function l(t){var n=t.offsetParent;return n!==e.document.body&&n?n:e.document.documentElement}function u(t){var n=t.parentNode;return n?n===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(s(n,"overflow"))||-1!==["scroll","auto"].indexOf(s(n,"overflow-x"))||-1!==["scroll","auto"].indexOf(s(n,"overflow-y"))?n:u(t.parentNode):t}function c(t){return t!==e.document.body&&("fixed"===s(t,"position")||(t.parentNode?c(t.parentNode):t))}function f(e,t){function n(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}Object.keys(t).forEach((function(r){var o="";-1!==["width","height","top","right","bottom","left"].indexOf(r)&&n(t[r])&&(o="px"),e.style[r]=t[r]+o}))}function d(e){var t={};return e&&"[object Function]"===t.toString.call(e)}function p(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function h(e){var t=e.getBoundingClientRect(),n=-1!=navigator.userAgent.indexOf("MSIE"),r=n&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:r,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-r}}function v(e,t,n){var r=h(e),o=h(t);if(n){var i=u(t);o.top+=i.scrollTop,o.bottom+=i.scrollTop,o.left+=i.scrollLeft,o.right+=i.scrollLeft}var a={top:r.top-o.top,left:r.left-o.left,bottom:r.top-o.top+r.height,right:r.left-o.left+r.width,width:r.width,height:r.height};return a}function m(t){for(var n=["","ms","webkit","moz","o"],r=0;r1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element===!1&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(o),o;function s(e,t){t.forEach((function(t){e.classList.add(t)}))}function l(e,t){t.forEach((function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")}))}},n.prototype._getPosition=function(e,t){var n=l(t);if(this._options.forceAbsolute)return"absolute";var r=c(t,n);return r?"fixed":"absolute"},n.prototype._getOffsets=function(e,t,n){n=n.split("-")[0];var o={};o.position=this.state.position;var i="fixed"===o.position,a=v(t,l(e),i),s=r(e);return-1!==["right","left"].indexOf(n)?(o.top=a.top+a.height/2-s.height/2,o.left="left"===n?a.left-s.width:a.right):(o.left=a.left+a.width/2-s.width/2,o.top="top"===n?a.top-s.height:a.bottom),o.width=s.width,o.height=s.height,{popper:o,reference:a}},n.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=u(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},n.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},n.prototype._getBoundaries=function(t,n,r){var o,i,a={};if("window"===r){var s=e.document.body,c=e.document.documentElement;i=Math.max(s.scrollHeight,s.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight),o=Math.max(s.scrollWidth,s.offsetWidth,c.clientWidth,c.scrollWidth,c.offsetWidth),a={top:0,right:o,bottom:i,left:0}}else if("viewport"===r){var f=l(this._popper),d=u(this._popper),h=p(f),v=function(e){return e==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):e.scrollTop},m=function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft},y="fixed"===t.offsets.popper.position?0:v(d),g="fixed"===t.offsets.popper.position?0:m(d);a={top:0-(h.top-y),right:e.document.documentElement.clientWidth-(h.left-g),bottom:e.document.documentElement.clientHeight-(h.top-y),left:0-(h.left-g)}}else a=l(this._popper)===r?{top:0,left:0,right:r.clientWidth,bottom:r.clientHeight}:p(r);return a.left+=n,a.right-=n,a.top=a.top+n,a.bottom=a.bottom-n,a},n.prototype.runModifiers=function(e,t,n){var r=t.slice();return void 0!==n&&(r=this._options.modifiers.slice(0,a(this._options.modifiers,n))),r.forEach(function(t){d(t)&&(e=t.call(this,e))}.bind(this)),e},n.prototype.isModifierRequired=function(e,t){var n=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,n).filter((function(e){return e===t})).length},n.prototype.modifiers={},n.prototype.modifiers.applyStyle=function(e){var t,n={position:e.offsets.popper.position},r=Math.round(e.offsets.popper.left),o=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=m("transform"))?(n[t]="translate3d("+r+"px, "+o+"px, 0)",n.top=0,n.left=0):(n.left=r,n.top=o),Object.assign(n,e.styles),f(this._popper,n),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&f(e.arrowElement,e.offsets.arrow),e},n.prototype.modifiers.shift=function(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var o=e.offsets.reference,a=i(e.offsets.popper),s={y:{start:{top:o.top},end:{top:o.top+o.height-a.height}},x:{start:{left:o.left},end:{left:o.left+o.width-a.width}}},l=-1!==["bottom","top"].indexOf(n)?"x":"y";e.offsets.popper=Object.assign(a,s[l][r])}return e},n.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,n=i(e.offsets.popper),r={left:function(){var t=n.left;return n.lefte.boundaries.right&&(t=Math.min(n.left,e.boundaries.right-n.width)),{left:t}},top:function(){var t=n.top;return n.tope.boundaries.bottom&&(t=Math.min(n.top,e.boundaries.bottom-n.height)),{top:t}}};return t.forEach((function(t){e.offsets.popper=Object.assign(n,r[t]())})),e},n.prototype.modifiers.keepTogether=function(e){var t=i(e.offsets.popper),n=e.offsets.reference,r=Math.floor;return t.rightr(n.right)&&(e.offsets.popper.left=r(n.right)),t.bottomr(n.bottom)&&(e.offsets.popper.top=r(n.bottom)),e},n.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],n=o(t),r=e.placement.split("-")[1]||"",a=[];return a="flip"===this._options.flipBehavior?[t,n]:this._options.flipBehavior,a.forEach(function(s,l){if(t===s&&a.length!==l+1){t=e.placement.split("-")[0],n=o(t);var u=i(e.offsets.popper),c=-1!==["right","bottom"].indexOf(t);(c&&Math.floor(e.offsets.reference[t])>Math.floor(u[n])||!c&&Math.floor(e.offsets.reference[t])s[p]&&(e.offsets.popper[f]+=l[f]+h-s[p]);var v=l[f]+(n||l[c]/2-h/2),m=v-s[f];return m=Math.max(Math.min(s[c]-h-8,m),8),o[f]=m,o[d]="",e.offsets.arrow=o,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),n=1;n=p?e?"":void 0:(r=l(f,d),r<55296||r>56319||d+1===p||(c=l(f,d+1))<56320||c>57343?e?s(f,d):r:e?u(f,d,d+2):c-56320+(r-55296<<10)+65536)}};e.exports={codeAt:c(!1),charAt:c(!0)}},"65f0":function(e,t,n){var r=n("0b42");e.exports=function(e,t){return new(r(e))(0===t?0:t)}},"68ee":function(e,t,n){var r=n("e330"),o=n("d039"),i=n("1626"),a=n("f5df"),s=n("d066"),l=n("8925"),u=function(){},c=[],f=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,p=r(d.exec),h=!d.exec(u),v=function(e){if(!i(e))return!1;try{return f(u,c,e),!0}catch(t){return!1}},m=function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!p(d,l(e))}catch(t){return!0}};m.sham=!0,e.exports=!f||o((function(){var e;return v(v.call)||!v(Object)||!v((function(){e=!0}))||e}))?m:v},"69f3":function(e,t,n){var r,o,i,a=n("7f9a"),s=n("da84"),l=n("e330"),u=n("861d"),c=n("9112"),f=n("1a2d"),d=n("c6cd"),p=n("f772"),h=n("d012"),v="Object already initialized",m=s.TypeError,y=s.WeakMap,g=function(e){return i(e)?o(e):r(e,{})},b=function(e){return function(t){var n;if(!u(t)||(n=o(t)).type!==e)throw m("Incompatible receiver, "+e+" required");return n}};if(a||d.state){var _=d.state||(d.state=new y),x=l(_.get),w=l(_.has),C=l(_.set);r=function(e,t){if(w(_,e))throw new m(v);return t.facade=e,C(_,e,t),t},o=function(e){return x(_,e)||{}},i=function(e){return w(_,e)}}else{var S=p("state");h[S]=!0,r=function(e,t){if(f(e,S))throw new m(v);return t.facade=e,c(e,S,t),t},o=function(e){return f(e,S)?e[S]:{}},i=function(e){return f(e,S)}}e.exports={set:r,get:o,has:i,enforce:g,getterFor:b}},"6ac9":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=77)}({0:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},2:function(e,t){e.exports=n("5924")},3:function(e,t){e.exports=n("8122")},5:function(e,t){e.exports=n("e974")},7:function(e,t){e.exports=n("2b0e")},77:function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",[n("transition",{attrs:{name:e.transition},on:{"after-enter":e.handleAfterEnter,"after-leave":e.handleAfterLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:!e.disabled&&e.showPopper,expression:"!disabled && showPopper"}],ref:"popper",staticClass:"el-popover el-popper",class:[e.popperClass,e.content&&"el-popover--plain"],style:{width:e.width+"px"},attrs:{role:"tooltip",id:e.tooltipId,"aria-hidden":e.disabled||!e.showPopper?"true":"false"}},[e.title?n("div",{staticClass:"el-popover__title",domProps:{textContent:e._s(e.title)}}):e._e(),e._t("default",[e._v(e._s(e.content))])],2)]),n("span",{ref:"wrapper",staticClass:"el-popover__reference-wrapper"},[e._t("reference")],2)],1)},o=[];r._withStripped=!0;var i=n(5),a=n.n(i),s=n(2),l=n(3),u={name:"ElPopover",mixins:[a.a],props:{trigger:{type:String,default:"click",validator:function(e){return["click","focus","hover","manual"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(l["generateId"])()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(Object(s["addClass"])(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),n.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(s["on"])(t,"focusin",(function(){e.handleFocus();var n=t.__vue__;n&&"function"===typeof n.focus&&n.focus()})),Object(s["on"])(n,"focusin",this.handleFocus),Object(s["on"])(t,"focusout",this.handleBlur),Object(s["on"])(n,"focusout",this.handleBlur)),Object(s["on"])(t,"keydown",this.handleKeydown),Object(s["on"])(t,"click",this.handleClick)),"click"===this.trigger?(Object(s["on"])(t,"click",this.doToggle),Object(s["on"])(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(s["on"])(t,"mouseenter",this.handleMouseEnter),Object(s["on"])(n,"mouseenter",this.handleMouseEnter),Object(s["on"])(t,"mouseleave",this.handleMouseLeave),Object(s["on"])(n,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(s["on"])(t,"focusin",this.doShow),Object(s["on"])(t,"focusout",this.doClose)):(Object(s["on"])(t,"mousedown",this.doShow),Object(s["on"])(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(s["addClass"])(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(s["removeClass"])(this.referenceElm,"focusing")},handleBlur:function(){Object(s["removeClass"])(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout((function(){e.showPopper=!0}),this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout((function(){e.showPopper=!1}),this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&n&&!n.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(s["off"])(e,"click",this.doToggle),Object(s["off"])(e,"mouseup",this.doClose),Object(s["off"])(e,"mousedown",this.doShow),Object(s["off"])(e,"focusin",this.doShow),Object(s["off"])(e,"focusout",this.doClose),Object(s["off"])(e,"mousedown",this.doShow),Object(s["off"])(e,"mouseup",this.doClose),Object(s["off"])(e,"mouseleave",this.handleMouseLeave),Object(s["off"])(e,"mouseenter",this.handleMouseEnter),Object(s["off"])(document,"click",this.handleDocumentClick)}},c=u,f=n(0),d=Object(f["a"])(c,r,o,!1,null,null,null);d.options.__file="packages/popover/src/main.vue";var p=d.exports,h=function(e,t,n){var r=t.expression?t.value:t.arg,o=n.context.$refs[r];o&&(Array.isArray(o)?o[0].$refs.reference=e:o.$refs.reference=e)},v={bind:function(e,t,n){h(e,t,n)},inserted:function(e,t,n){h(e,t,n)}},m=n(7),y=n.n(m);y.a.directive("popover",v),p.install=function(e){e.directive("popover",v),e.component(p.name,p)},p.directive=v;t["default"]=p}})},"6b7c":function(e,t,n){"use strict";t.__esModule=!0;var r=n("4897");t.default={methods:{t:function(){for(var e=arguments.length,t=Array(e),n=0;n0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),c?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,r=u.some((function(e){return!!~n.indexOf(e)}));r&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),d=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),j="undefined"!==typeof WeakMap?new WeakMap:new n,$=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=f.getInstance(),r=new k(t,n,this);j.set(this,r)}return e}();["observe","unobserve","disconnect"].forEach((function(e){$.prototype[e]=function(){var t;return(t=j.get(this))[e].apply(t,arguments)}}));var A=function(){return"undefined"!==typeof o.ResizeObserver?o.ResizeObserver:$}();t["default"]=A}.call(this,n("c8ba"))},"6ed5":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=78)}({0:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},10:function(e,t){e.exports=n("f3ad")},13:function(e,t){e.exports=n("5128")},14:function(e,t){e.exports=n("eedf")},2:function(e,t){e.exports=n("5924")},20:function(e,t){e.exports=n("4897")},23:function(e,t){e.exports=n("41f8")},47:function(e,t){e.exports=n("722f")},6:function(e,t){e.exports=n("6b7c")},7:function(e,t){e.exports=n("2b0e")},78:function(e,t,n){"use strict";n.r(t);var r=n(7),o=n.n(r),i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"msgbox-fade"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-message-box__wrapper",attrs:{tabindex:"-1",role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[n("div",{staticClass:"el-message-box",class:[e.customClass,e.center&&"el-message-box--center"]},[null!==e.title?n("div",{staticClass:"el-message-box__header"},[n("div",{staticClass:"el-message-box__title"},[e.icon&&e.center?n("div",{class:["el-message-box__status",e.icon]}):e._e(),n("span",[e._v(e._s(e.title))])]),e.showClose?n("button",{staticClass:"el-message-box__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:function(t){e.handleAction(e.distinguishCancelAndClose?"close":"cancel")},keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction(e.distinguishCancelAndClose?"close":"cancel")}}},[n("i",{staticClass:"el-message-box__close el-icon-close"})]):e._e()]):e._e(),n("div",{staticClass:"el-message-box__content"},[n("div",{staticClass:"el-message-box__container"},[e.icon&&!e.center&&""!==e.message?n("div",{class:["el-message-box__status",e.icon]}):e._e(),""!==e.message?n("div",{staticClass:"el-message-box__message"},[e._t("default",[e.dangerouslyUseHTMLString?n("p",{domProps:{innerHTML:e._s(e.message)}}):n("p",[e._v(e._s(e.message))])])],2):e._e()]),n("div",{directives:[{name:"show",rawName:"v-show",value:e.showInput,expression:"showInput"}],staticClass:"el-message-box__input"},[n("el-input",{ref:"input",attrs:{type:e.inputType,placeholder:e.inputPlaceholder},nativeOn:{keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleInputEnter(t)}},model:{value:e.inputValue,callback:function(t){e.inputValue=t},expression:"inputValue"}}),n("div",{staticClass:"el-message-box__errormsg",style:{visibility:e.editorErrorMessage?"visible":"hidden"}},[e._v(e._s(e.editorErrorMessage))])],1)]),n("div",{staticClass:"el-message-box__btns"},[e.showCancelButton?n("el-button",{class:[e.cancelButtonClasses],attrs:{loading:e.cancelButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("cancel")}},nativeOn:{click:function(t){e.handleAction("cancel")}}},[e._v("\n "+e._s(e.cancelButtonText||e.t("el.messagebox.cancel"))+"\n ")]):e._e(),n("el-button",{directives:[{name:"show",rawName:"v-show",value:e.showConfirmButton,expression:"showConfirmButton"}],ref:"confirm",class:[e.confirmButtonClasses],attrs:{loading:e.confirmButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("confirm")}},nativeOn:{click:function(t){e.handleAction("confirm")}}},[e._v("\n "+e._s(e.confirmButtonText||e.t("el.messagebox.confirm"))+"\n ")])],1)])])])},a=[];i._withStripped=!0;var s=n(13),l=n.n(s),u=n(6),c=n.n(u),f=n(10),d=n.n(f),p=n(14),h=n.n(p),v=n(2),m=n(20),y=n(47),g=n.n(y),b=void 0,_={success:"success",info:"info",warning:"warning",error:"error"},x={mixins:[l.a,c.a],props:{modal:{default:!0},lockScroll:{default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{default:!0},closeOnPressEscape:{default:!0},closeOnHashChange:{default:!0},center:{default:!1,type:Boolean},roundButton:{default:!1,type:Boolean}},components:{ElInput:d.a,ElButton:h.a},computed:{icon:function(){var e=this.type,t=this.iconClass;return t||(e&&_[e]?"el-icon-"+_[e]:"")},confirmButtonClasses:function(){return"el-button--primary "+this.confirmButtonClass},cancelButtonClasses:function(){return""+this.cancelButtonClass}},methods:{getSafeClose:function(){var e=this,t=this.uid;return function(){e.$nextTick((function(){t===e.uid&&e.doClose()}))}},doClose:function(){var e=this;this.visible&&(this.visible=!1,this._closing=!0,this.onClose&&this.onClose(),b.closeDialog(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose(),setTimeout((function(){e.action&&e.callback(e.action,e)})))},handleWrapperClick:function(){this.closeOnClickModal&&this.handleAction(this.distinguishCancelAndClose?"close":"cancel")},handleInputEnter:function(){if("textarea"!==this.inputType)return this.handleAction("confirm")},handleAction:function(e){("prompt"!==this.$type||"confirm"!==e||this.validate())&&(this.action=e,"function"===typeof this.beforeClose?(this.close=this.getSafeClose(),this.beforeClose(e,this,this.close)):this.doClose())},validate:function(){if("prompt"===this.$type){var e=this.inputPattern;if(e&&!e.test(this.inputValue||""))return this.editorErrorMessage=this.inputErrorMessage||Object(m["t"])("el.messagebox.error"),Object(v["addClass"])(this.getInputElement(),"invalid"),!1;var t=this.inputValidator;if("function"===typeof t){var n=t(this.inputValue);if(!1===n)return this.editorErrorMessage=this.inputErrorMessage||Object(m["t"])("el.messagebox.error"),Object(v["addClass"])(this.getInputElement(),"invalid"),!1;if("string"===typeof n)return this.editorErrorMessage=n,Object(v["addClass"])(this.getInputElement(),"invalid"),!1}}return this.editorErrorMessage="",Object(v["removeClass"])(this.getInputElement(),"invalid"),!0},getFirstFocus:function(){var e=this.$el.querySelector(".el-message-box__btns .el-button"),t=this.$el.querySelector(".el-message-box__btns .el-message-box__title");return e||t},getInputElement:function(){var e=this.$refs.input.$refs;return e.input||e.textarea},handleClose:function(){this.handleAction("close")}},watch:{inputValue:{immediate:!0,handler:function(e){var t=this;this.$nextTick((function(n){"prompt"===t.$type&&null!==e&&t.validate()}))}},visible:function(e){var t=this;e&&(this.uid++,"alert"!==this.$type&&"confirm"!==this.$type||this.$nextTick((function(){t.$refs.confirm.$el.focus()})),this.focusAfterClosed=document.activeElement,b=new g.a(this.$el,this.focusAfterClosed,this.getFirstFocus())),"prompt"===this.$type&&(e?setTimeout((function(){t.$refs.input&&t.$refs.input.$el&&t.getInputElement().focus()}),500):(this.editorErrorMessage="",Object(v["removeClass"])(this.getInputElement(),"invalid")))}},mounted:function(){var e=this;this.$nextTick((function(){e.closeOnHashChange&&window.addEventListener("hashchange",e.close)}))},beforeDestroy:function(){this.closeOnHashChange&&window.removeEventListener("hashchange",this.close),setTimeout((function(){b.closeDialog()}))},data:function(){return{uid:1,title:void 0,message:"",type:"",iconClass:"",customClass:"",showInput:!1,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,action:"",confirmButtonText:"",cancelButtonText:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonClass:"",confirmButtonDisabled:!1,cancelButtonClass:"",editorErrorMessage:null,callback:null,dangerouslyUseHTMLString:!1,focusAfterClosed:null,isOnComposition:!1,distinguishCancelAndClose:!1}}},w=x,C=n(0),S=Object(C["a"])(w,i,a,!1,null,null,null);S.options.__file="packages/message-box/src/main.vue";var O=S.exports,E=n(9),k=n.n(E),j=n(23),$="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A={title:null,message:"",type:"",iconClass:"",showInput:!1,showClose:!0,modalFade:!0,lockScroll:!0,closeOnClickModal:!0,closeOnPressEscape:!0,closeOnHashChange:!0,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,confirmButtonPosition:"right",confirmButtonHighlight:!1,cancelButtonHighlight:!1,confirmButtonText:"",cancelButtonText:"",confirmButtonClass:"",cancelButtonClass:"",customClass:"",beforeClose:null,dangerouslyUseHTMLString:!1,center:!1,roundButton:!1,distinguishCancelAndClose:!1},T=o.a.extend(O),P=void 0,L=void 0,M=[],R=function(e){if(P){var t=P.callback;"function"===typeof t&&(L.showInput?t(L.inputValue,e):t(e)),P.resolve&&("confirm"===e?L.showInput?P.resolve({value:L.inputValue,action:e}):P.resolve(e):!P.reject||"cancel"!==e&&"close"!==e||P.reject(e))}},N=function(){L=new T({el:document.createElement("div")}),L.callback=R},I=function e(){if(L||N(),L.action="",(!L.visible||L.closeTimer)&&M.length>0){P=M.shift();var t=P.options;for(var n in t)t.hasOwnProperty(n)&&(L[n]=t[n]);void 0===t.callback&&(L.callback=R);var r=L.callback;L.callback=function(t,n){r(t,n),e()},Object(j["isVNode"])(L.message)?(L.$slots.default=[L.message],L.message=null):delete L.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach((function(e){void 0===L[e]&&(L[e]=!0)})),document.body.appendChild(L.$el),o.a.nextTick((function(){L.visible=!0}))}},F=function e(t,n){if(!o.a.prototype.$isServer){if("string"===typeof t||Object(j["isVNode"])(t)?(t={message:t},"string"===typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!n&&(n=t.callback),"undefined"!==typeof Promise)return new Promise((function(r,o){M.push({options:k()({},A,e.defaults,t),callback:n,resolve:r,reject:o}),I()}));M.push({options:k()({},A,e.defaults,t),callback:n}),I()}};F.setDefaults=function(e){F.defaults=e},F.alert=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":$(t))?(n=t,t=""):void 0===t&&(t=""),F(k()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},n))},F.confirm=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":$(t))?(n=t,t=""):void 0===t&&(t=""),F(k()({title:t,message:e,$type:"confirm",showCancelButton:!0},n))},F.prompt=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":$(t))?(n=t,t=""):void 0===t&&(t=""),F(k()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},n))},F.close=function(){L.doClose(),L.visible=!1,M=[],P=null};var z=F;t["default"]=z},9:function(e,t){e.exports=n("7f4d")}})},7149:function(e,t,n){"use strict";var r=n("23e7"),o=n("d066"),i=n("c430"),a=n("d256"),s=n("4738").CONSTRUCTOR,l=n("cdf9"),u=o("Promise"),c=i&&!s;r({target:"Promise",stat:!0,forced:i||s},{resolve:function(e){return l(c&&this===u?a:this,e)}})},"722f":function(e,t,n){"use strict";t.__esModule=!0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n("e452"),i=a(o);function a(e){return e&&e.__esModule?e:{default:e}}var s,l=l||{};l.Dialog=function(e,t,n){var o=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"===typeof t?this.focusAfterClosed=document.getElementById(t):"object"===("undefined"===typeof t?"undefined":r(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"===typeof n?this.focusFirst=document.getElementById(n):"object"===("undefined"===typeof n?"undefined":r(n))?this.focusFirst=n:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():i.default.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,s=function(e){o.trapFocus(e)},this.addListeners()},l.Dialog.prototype.addListeners=function(){document.addEventListener("focus",s,!0)},l.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",s,!0)},l.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout((function(){e.focusAfterClosed.focus()}))},l.Dialog.prototype.trapFocus=function(e){i.default.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(i.default.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&i.default.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))},t.default=l.Dialog},7418:function(e,t){t.f=Object.getOwnPropertySymbols},"76b9":function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=97)}({0:function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):o&&(l=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:u}}n.d(t,"a",(function(){return r}))},97:function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[e._t("default")],2)},o=[];r._withStripped=!0;var i={name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},a=i,s=n(0),l=Object(s["a"])(a,r,o,!1,null,null,null);l.options.__file="packages/breadcrumb/src/breadcrumb.vue";var u=l.exports;u.install=function(e){e.component(u.name,u)};t["default"]=u}})},7839:function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"785a":function(e,t,n){var r=n("cc12"),o=r("span").classList,i=o&&o.constructor&&o.constructor.prototype;e.exports=i===Object.prototype?void 0:i},"7a77":function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},"7aac":function(e,t,n){"use strict";var r=n("c532");e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,a){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"7b0b":function(e,t,n){var r=n("da84"),o=n("1d80"),i=r.Object;e.exports=function(e){return i(o(e))}},"7b3e":function(e,t,n){"use strict";var r,o=n("a3de"); /** * Checks if an event is supported in the current execution environment. * diff --git a/app/src/main/assets/web/bookshelf/js/detail.08ed5833.js b/app/src/main/assets/web/bookshelf/js/detail.08ed5833.js deleted file mode 100644 index 2e2b85919..000000000 --- a/app/src/main/assets/web/bookshelf/js/detail.08ed5833.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["detail"],{"004c":function(t,e,n){"use strict";n("fe9c")},"057f":function(t,e,n){var o=n("c6b6"),i=n("fc6a"),r=n("241c").f,s=n("4dae"),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return r(t)}catch(e){return s(a)}};t.exports.f=function(t){return a&&"Window"==o(t)?c(t):r(i(t))}},"05b3":function(t,e,n){},"0827":function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEUWGBkYGhsdHyAfISI1t/v6AAAB5ElEQVQozxXQsYoTURSA4f/EeycZsDgDdySDjihk38Hy3GWi2J2BCaziQhaiaB+tt9AFu1kwvYUPsIXNPoB9BAUfwAfwEUzKv/v4odGrroyp9/rUaC6rZ5skv5F8qPsfYYP+yKUMymmAEEeW55oUR4o8jr05KNzJ07yvB7w0KKfLwcQUSjfmMU0PJfPHFoEVU+ohNrcKMEzMQ23FDnVSI2dqtYWI7KlLu6vE4UnyvKc3SJuL7lBbeEEl42ItpGLjzIT8PRJCmkRjVpVpsbJFVN0687okJNZiHAr5Z7MV0BnGIDc+THM1zlbieBc1Fq+tH5BH+OpnbWkj40hSqC8Lw2TvFuF0SUFJCk2IytXbjeqcRAt6NHpnrUkUU4KRzZs8RCK8N/Akn2W04LwxMU/V7XK0bDyN2RxfDyx7I4h5vjZby72V8UnOWumZL3qtYc+8DTE0siSBMXGhywx2dMYPnQHbxdFZ7deiNGxCCtD/QWnbwDoGhRYPDzUdUA3krjpnkvdAgDN4ddLkEQSov9qjd42HaDjI34gEqS9TUueAk+sc4qg5ws407KQYKs8G1jv4xBlqBVk6cb4dISZIwVi1Jzu4+HLk6lyfUxkXvwy+1Q+4WVdHIhwfybZ6CWVhxMEhShOgsP/HOW0MvZJeFwAAAABJRU5ErkJggg=="},"0928":function(t,e,n){"use strict";n("7715")},1276:function(t,e,n){"use strict";var o=n("2ba4"),i=n("c65b"),r=n("e330"),s=n("d784"),a=n("44e7"),c=n("825a"),l=n("1d80"),u=n("4840"),f=n("8aa5"),d=n("50c4"),h=n("577e"),p=n("dc4a"),g=n("4dae"),A=n("14c3"),m=n("9263"),v=n("9f7f"),b=n("d039"),y=v.UNSUPPORTED_Y,C=4294967295,S=Math.min,x=[].push,B=r(/./.exec),w=r(x),k=r("".slice),I=!b((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));s("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=h(l(this)),s=void 0===n?C:n>>>0;if(0===s)return[];if(void 0===t)return[r];if(!a(t))return i(e,r,t,s);var c,u,f,d=[],p=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),A=0,v=new RegExp(t.source,p+"g");while(c=i(m,v,r)){if(u=v.lastIndex,u>A&&(w(d,k(r,A,c.index)),c.length>1&&c.index=s))break;v.lastIndex===c.index&&v.lastIndex++}return A===r.length?!f&&B(v,"")||w(d,""):w(d,k(r,A)),d.length>s?g(d,0,s):d}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:i(e,this,t,n)}:e,[function(e,n){var o=l(this),s=void 0==e?void 0:p(e,t);return s?i(s,e,o,n):i(r,h(o),e,n)},function(t,o){var i=c(this),s=h(t),a=n(r,i,s,o,r!==e);if(a.done)return a.value;var l=u(i,RegExp),p=i.unicode,g=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(y?"g":"y"),m=new l(y?"^(?:"+i.source+")":i,g),v=void 0===o?C:o>>>0;if(0===v)return[];if(0===s.length)return null===A(m,s)?[s]:[];var b=0,x=0,B=[];while(x1&&void 0!==arguments[1]?arguments[1]:{};switch(l=d.duration||1e3,i=d.offset||0,p=d.callback,r=d.easing||u,s=d.a11y||!1,a(d.container)){case"object":t=d.container;break;case"string":t=document.querySelector(d.container);break;default:t=window}switch(n=g(),a(f)){case"number":e=void 0,s=!1,o=n+f;break;case"object":e=f,o=A(e);break;case"string":e=document.querySelector(f),o=A(e);break}switch(c=o-n+i,a(d.duration)){case"number":l=d.duration;break;case"function":l=d.duration(c);break}requestAnimationFrame(v)}return y},d=f(),h=d,p=n("7286"),g=n.n(p),A=n("477e"),m=n.n(A),v=n("e160"),b=n.n(v),y=n("df5e"),C=n.n(y),S=n("ec0f"),x=n.n(S),B=n("b671"),w=n.n(B),k=n("5629"),I=n.n(k),E=n("d0e3"),T=n.n(E),D=n("4039"),P=n.n(D),U=n("1e75"),O=n.n(U),Q=n("1632"),V=n.n(Q),M=n("7abd"),R=n.n(M),F=n("356c"),N=n.n(F),L=n("b165"),K=n.n(L),H=n("cf68"),W=n.n(H),z=n("4400"),J=n.n(z),G=n("802e"),j=n.n(G),q=n("0827"),Y=n.n(q),Z={themes:[{body:"#ede7da url("+g.a+") repeat",content:"#ede7da url("+m.a+") repeat",popup:"#ede7da url("+b.a+") repeat"},{body:"#ede7da url("+C.a+") repeat",content:"#ede7da url("+x.a+") repeat",popup:"#ede7da url("+w.a+") repeat"},{body:"#ede7da url("+I.a+") repeat",content:"#ede7da url("+T.a+") repeat",popup:"#ede7da url("+P.a+") repeat"},{body:"#ede7da url("+O.a+") repeat",content:"#ede7da url("+V.a+") repeat",popup:"#ede7da url("+R.a+") repeat"},{body:"#ebcece repeat",content:"#f5e4e4 repeat",popup:"#faeceb repeat"},{body:"#ede7da url("+N.a+") repeat",content:"#ede7da url("+K.a+") repeat",popup:"#ede7da url("+W.a+") repeat"},{body:"#ede7da url("+J.a+") repeat",content:"#ede7da url("+j.a+") repeat",popup:"#ede7da url("+Y.a+") repeat"}],fonts:[{fontFamily:"Microsoft YaHei, PingFangSC-Regular, HelveticaNeue-Light, Helvetica Neue Light, sans-serif"},{fontFamily:"PingFangSC-Regular, -apple-system, Simsun"},{fontFamily:"Kaiti"}]},X=Z,$=(n("05b3"),{name:"PopCata",data:function(){return{isNight:6==this.$store.state.config.theme,index:this.$store.state.readingBook.index}},computed:{catalog:function(){return this.$store.state.readingBook.catalog},popCataVisible:function(){return this.$store.state.popCataVisible},theme:function(){return this.$store.state.config.theme},popupTheme:function(){return{background:X.themes[this.theme].popup}}},mounted:function(){},watch:{theme:function(t){this.isNight=6==t},popCataVisible:function(){this.$nextTick((function(){var t=this.$store.state.readingBook.index,e=this.$refs.cataData;h(this.$refs.cata[t],{container:e,duration:0})}))}},methods:{isSelected:function(t){return t==this.$store.state.readingBook.index},gotoChapter:function(t){this.index=this.catalog.indexOf(t),this.$store.commit("setPopCataVisible",!1),this.$store.commit("setContentLoading",!0),this.$emit("getContent",this.index)}}}),_=$,tt=(n("635f"),n("2877")),et=Object(tt["a"])(_,r,s,!1,null,"0aacaab8",null),nt=et.exports,ot=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"settings-wrapper",class:{night:t.isNight,day:!t.isNight},style:t.popupTheme},[n("div",{staticClass:"settings-title"},[t._v("设置")]),n("div",{staticClass:"setting-list"},[n("ul",[n("li",{staticClass:"theme-list"},[n("i",[t._v("阅读主题")]),t._l(t.themeColors,(function(e,o){return n("span",{key:o,ref:"themes",refInFor:!0,staticClass:"theme-item",class:{selected:t.selectedTheme==o},style:e,on:{click:function(e){return t.setTheme(o)}}},[o<6?n("em",{staticClass:"iconfont"},[t._v("")]):n("em",{staticClass:"moon-icon"},[t._v(t._s(t.moonIcon))])])}))],2),n("li",{staticClass:"font-list"},[n("i",[t._v("正文字体")]),t._l(t.fonts,(function(e,o){return n("span",{key:o,staticClass:"font-item",class:{selected:t.selectedFont==o},on:{click:function(e){return t.setFont(o)}}},[t._v(t._s(e))])}))],2),n("li",{staticClass:"font-size"},[n("i",[t._v("字体大小")]),n("div",{staticClass:"resize"},[n("span",{staticClass:"less",on:{click:t.lessFontSize}},[n("em",{staticClass:"iconfont"},[t._v("")])]),n("b"),t._v(" "),n("span",{staticClass:"lang"},[t._v(t._s(t.fontSize))]),n("b"),n("span",{staticClass:"more",on:{click:t.moreFontSize}},[n("em",{staticClass:"iconfont"},[t._v("")])])])]),t.$store.state.miniInterface?t._e():n("li",{staticClass:"read-width"},[n("i",[t._v("页面宽度")]),n("div",{staticClass:"resize"},[n("span",{staticClass:"less",on:{click:t.lessReadWidth}},[n("em",{staticClass:"iconfont"},[t._v("")])]),n("b"),t._v(" "),n("span",{staticClass:"lang"},[t._v(t._s(t.readWidth))]),n("b"),n("span",{staticClass:"more",on:{click:t.moreReadWidth}},[n("em",{staticClass:"iconfont"},[t._v("")])])])])])])])},it=[],rt=(n("82da"),n("b3f5")),st={name:"ReadSettings",data:function(){return{theme:0,isNight:6==this.$store.state.config.theme,moonIcon:"",themeColors:[{background:"rgba(250, 245, 235, 0.8)"},{background:"rgba(245, 234, 204, 0.8)"},{background:"rgba(230, 242, 230, 0.8)"},{background:"rgba(228, 241, 245, 0.8)"},{background:"rgba(245, 228, 228, 0.8)"},{background:"rgba(224, 224, 224, 0.8)"},{background:"rgba(0, 0, 0, 0.5)"}],moonIconStyle:{display:"inline",color:"rgba(255,255,255,0.2)"},fonts:["雅黑","宋体","楷书"]}},mounted:function(){var t=this.$store.state.config;this.theme=t.theme,6==this.theme?this.moonIcon="":this.moonIcon=""},computed:{config:function(){return this.$store.state.config},popupTheme:function(){return{background:X.themes[this.config.theme].popup}},selectedTheme:function(){return this.$store.state.config.theme},selectedFont:function(){return this.$store.state.config.font},fontSize:function(){return this.$store.state.config.fontSize},readWidth:function(){return this.$store.state.config.readWidth}},methods:{setTheme:function(t){6==t?(this.isNight=!0,this.moonIcon="",this.moonIconStyle.color="#ed4259"):(this.isNight=!1,this.moonIcon="",this.moonIconStyle.color="rgba(255,255,255,0.2)");var e=this.config;e.theme=t,this.$store.commit("setConfig",e),this.uploadConfig()},setFont:function(t){var e=this.config;e.font=t,this.$store.commit("setConfig",e),this.uploadConfig()},moreFontSize:function(){var t=this.config;t.fontSize<48&&(t.fontSize+=2),this.$store.commit("setConfig",t),this.uploadConfig()},lessFontSize:function(){var t=this.config;t.fontSize>12&&(t.fontSize-=2),this.$store.commit("setConfig",t),this.uploadConfig()},moreReadWidth:function(){var t=this.config;t.readWidth<960&&(t.readWidth+=160),this.$store.commit("setConfig",t),this.uploadConfig()},lessReadWidth:function(){var t=this.config;t.readWidth>640&&(t.readWidth-=160),this.$store.commit("setConfig",t),this.uploadConfig()},uploadConfig:function(){rt["a"].post("/saveReadConfig",this.config)}}},at=st,ct=(n("0928"),Object(tt["a"])(at,ot,it,!1,null,"65e7f0f4",null)),lt=ct.exports,ut=(n("d81d"),n("00b4"),n("466d"),{name:"pcontent",data:function(){return{}},props:["carray"],render:function(){var t=this,e=arguments[0],n=this.fontFamily,o=this.fontSize,i=n;return i.fontSize=o,this.show?e("div",[this.carray.map((function(n){return/]*src/.test(n)?e("img",{directives:[{name:"lazy",value:t.getImageSrc(n)}]}):e("p",{style:i,domProps:{innerHTML:n}})}))]):e("div")},computed:{show:function(){return this.$store.state.showContent},fontFamily:function(){return X.fonts[this.$store.state.config.font]},fontSize:function(){return this.$store.state.config.fontSize+"px"}},methods:{getImageSrc:function(t){var e=/]*src="([^"]*(?:"[^>]+\})?)"[^>]*>/;return t.match(e)[1]}},watch:{fontSize:function(){var t=this;t.$store.commit("setShowContent",!1),this.$nextTick((function(){t.$store.commit("setShowContent",!0)}))}}}),ft=ut,dt=(n("004c"),Object(tt["a"])(ft,c,l,!1,null,"39060afc",null)),ht=dt.exports,pt=n("897d"),gt=n.n(pt),At={components:{PopCata:nt,Pcontent:ht,ReadSettings:lt,PullTo:gt.a},created:function(){var t=JSON.parse(localStorage.getItem("config"));null!=t&&this.$store.commit("setConfig",t)},beforeCreate:function(){var t=JSON.parse(localStorage.getItem("config"));null!=t&&this.$store.commit("setConfig",t)},mounted:function(){var t=this;this.loading=this.$loading({target:this.$refs.content,lock:!0,text:"正在获取内容",spinner:"el-icon-loading",background:"rgba(0,0,0,0)"});var e=this,n=sessionStorage.getItem("bookUrl"),o=sessionStorage.getItem("bookName"),i=sessionStorage.getItem("chapterIndex")||0,r=JSON.parse(localStorage.getItem(n));(null==r||i>0)&&(r={bookName:o,bookUrl:n,index:i},localStorage.setItem(n,JSON.stringify(r))),this.getCatalog(n).then((function(n){var o=n.data.data;r.catalog=o,e.$store.commit("setReadingBook",r);var i=e.$store.state.readingBook.index||0;t.getContent(i),window.addEventListener("keyup",t.handleKeyPress),window.addEventListener("scroll",t.handleScroll)}),(function(t){throw e.loading.close(),e.$message.error("获取书籍目录失败"),t}))},destroyed:function(){window.removeEventListener("keyup",this.handleKeyPress),window.removeEventListener("scroll",this.handleScroll),this.readSettingsVisible=!1,this.popCataVisible=!1},watch:{title:function(){document.title=sessionStorage.getItem("bookName")+" | "+this.title},content:function(){var t=this;this.$store.commit("setContentLoading",!1),setTimeout((function(){return t.handleScroll()}),500)},theme:function(t){this.isNight=6==t},bodyColor:function(t){this.bodyTheme.background=t},chapterColor:function(t){this.chapterTheme.background=t},readWidth:function(t){this.chapterTheme.width=t;var e=-((parseInt(t)+130)/2+68)+"px",n=-((parseInt(t)+130)/2+52)+"px";this.leftBarTheme.marginLeft=e,this.rightBarTheme.marginRight=n},popupColor:function(t){this.leftBarTheme.background=t,this.rightBarTheme.background=t},readSettingsVisible:function(t){if(!t){var e=JSON.stringify(this.$store.state.config);localStorage.setItem("config",e)}}},data:function(){return{title:"",content:[],noPoint:!0,showToolBar:!1,onTop:!0,onBottom:!1,topConfig:{pullText:"加载上一章",triggerText:"松开加载上一章"},bottomConfig:{pullText:"加载下一章",triggerText:"松开加载下一章"}}},computed:{catalog:function(){return this.$store.state.catalog},windowHeight:function(){return window.innerHeight},contentHeight:function(){return this.$refs.content.offsetHeight},popCataVisible:{get:function(){return this.$store.state.popCataVisible},set:function(t){this.$store.commit("setPopCataVisible",t)}},readSettingsVisible:{get:function(){return this.$store.state.readSettingsVisible},set:function(t){this.$store.commit("setReadSettingsVisible",t)}},config:function(){return this.$store.state.config},theme:function(){return this.config.theme},bodyColor:function(){return X.themes[this.config.theme].body},chapterColor:function(){return X.themes[this.config.theme].content},popupColor:function(){return X.themes[this.config.theme].popup},isNight:function(){return 6==this.$store.state.config.theme},readWidth:function(){return this.$store.state.miniInterface?window.innerWidth+"px":this.$store.state.config.readWidth-130+"px"},popupWidth:function(){return this.$store.state.miniInterface?window.innerWidth-33:this.$store.state.config.readWidth-33},bodyTheme:function(){return{background:X.themes[this.$store.state.config.theme].body}},chapterTheme:function(){return{background:X.themes[this.$store.state.config.theme].content,width:this.readWidth}},leftBarTheme:function(){return{background:X.themes[this.$store.state.config.theme].popup,marginLeft:this.$store.state.miniInterface?0:-(this.$store.state.config.readWidth/2+68)+"px",display:this.$store.state.miniInterface&&!this.showToolBar?"none":"block"}},rightBarTheme:function(){return{background:X.themes[this.$store.state.config.theme].popup,marginRight:this.$store.state.miniInterface?0:-(this.$store.state.config.readWidth/2+52)+"px",display:this.$store.state.miniInterface&&!this.showToolBar?"none":"block"}},show:function(){return this.$store.state.showContent}},methods:{getCatalog:function(t){return rt["a"].get("/getChapterList?url="+encodeURIComponent(t))},getContent:function(t){var e=this;this.$store.commit("setShowContent",!1),this.loading.visible||(this.loading=this.$loading({target:this.$refs.content,lock:!0,text:"正在获取内容",spinner:"el-icon-loading",background:"rgba(0,0,0,0)"}));var n=sessionStorage.getItem("bookUrl"),o=JSON.parse(localStorage.getItem(n));o.index=t,localStorage.setItem(n,JSON.stringify(o)),this.$store.state.readingBook.index=t,sessionStorage.setItem("chapterIndex",t);var i=this.$store.state.readingBook.catalog[t].title,r=this.$store.state.readingBook.catalog[t].index;this.title=i,h(this.$refs.top,{duration:0});var s=this;rt["a"].get("/getBookContent?url="+encodeURIComponent(n)+"&index="+r).then((function(t){if(t.data.isSuccess){var n=t.data.data;s.content=n.split(/\n+/)}else s.$message.error("书源正文解析错误!"),s.content=["书源正文解析失败!"];if(e.$store.commit("setContentLoading",!0),s.loading.close(),s.noPoint=!1,s.$store.commit("setShowContent",!0),!t.data.isSuccess)throw t.data}),(function(t){throw s.$message.error("获取章节内容失败"),s.content=["获取章节内容失败!"],s.loading.close(),s.$store.commit("setShowContent",!0),t}))},toTop:function(){h(this.$refs.top)},toBottom:function(){h(this.$refs.bottom)},toNextChapter:function(t){this.$store.commit("setContentLoading",!0);var e=this.$store.state.readingBook.index;e++,"function"===typeof t&&t("done"),"undefined"!==typeof this.$store.state.readingBook.catalog[e]?(this.$message.info("下一章"),this.getContent(e)):this.$message.error("本章是最后一章")},toLastChapter:function(t){this.$store.commit("setContentLoading",!0);var e=this.$store.state.readingBook.index;e--,"function"===typeof t&&t("done"),"undefined"!==typeof this.$store.state.readingBook.catalog[e]?(this.$message.info("上一章"),this.getContent(e)):this.$message.error("本章是第一章")},toShelf:function(){this.$router.push("/")},handleKeyPress:function(t){switch(t.key){case"ArrowLeft":t.stopPropagation(),t.preventDefault(),this.toLastChapter();break;case"ArrowRight":t.stopPropagation(),t.preventDefault(),this.toNextChapter();break;case"ArrowUp":t.stopPropagation(),t.preventDefault(),0===document.documentElement.scrollTop?this.$message.warning("已到达页面顶部"):h(0-document.documentElement.clientHeight+100);break;case"ArrowDown":t.stopPropagation(),t.preventDefault(),document.documentElement.clientHeight+document.documentElement.scrollTop===document.documentElement.scrollHeight?this.$message.warning("已到达页面底部"):h(document.documentElement.clientHeight-100);break}},handleScroll:function(){var t=document.documentElement;this.onTop=0===t.scrollTop,this.onBottom=t.scrollTop+t.clientHeight>=t.scrollHeight}}},mt=At,vt=(n("be50"),Object(tt["a"])(mt,o,i,!1,null,"6f059ee2",null));e["default"]=vt.exports},5629:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXN383Q4tDP4c/R5NEInCCXAAACVElEQVQozw3Hv2sTYRwH4M/79pJ7bZL2bXqtERJ97zjUpbZDhg6pfC8qibi8hLR0EaJ0EFxaCSWDxjfpj1zrYBcRBKE6SAfBJWsx9i8IQfdQxDlKtA6t2OnhQfN3lbG7ytYRywF8rVoPCNO0X2sQOKDpAnSDK2VwkHgmh5yLGT8qASt+2KofnNt2Xg1gf1UF8AoM6052cRMNaloLZb7RKQGrKKji2OefsZF+VqIvos5ZLVIZCX61JcwUdk56wASVkgQvzPfvmT2twTSwyYaC/Pl/UhAHorFhBgZtL6XdAZRp1tkPwC1NLa9CWs5prLhI85NBQsLdXvjDymG3/EbYfQhVNYqc3TtktQhWLY3ko0QsdMbSEp+64v0NfxyqLbIGdh6M2xHHlLBGqKTyQo4E/nebBgBfe1GpdeywYXc8CT7D3cKXuMXkBy4xN6o5OuKamYp3DVI6uccO9lxgd2CAlJgI2BGgaAgIJV/TYwKqu3WFccjbMuA+bVkWgS2bfnlRbD1Eb1sDyWMmjKYIBgGAWbqKRicfvzBkBIz3V5AKnguWdglQEysQsSuVzOg6ALy1pitA5ykGCsc857BRYcgCSZyFOdvoOigSGoPc5Ta73mgxshIcQE5sHMHd9D7yqITw7JO+GHVMxjhzYLcKPSEgmz3fU+BRy3iYNtiXLaBssCW8KguReqkQOTb3MStV0Ugt4U1eIs1RZWRII6Ww8xeNNItyGGQI4ZMlpg/3lQtkl2JFnBp1imRyFe0kK2Id3PCslMgiQNMS77gvFeDhG3cSkYvheeg/e7ClIh5oh+IAAAAASUVORK5CYII="},"57b9":function(t,e,n){var o=n("c65b"),i=n("d066"),r=n("b622"),s=n("cb2d");t.exports=function(){var t=i("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,a=r("toPrimitive");e&&!e[a]&&s(e,a,(function(t){return o(n,this)}),{arity:1})}},"5a47":function(t,e,n){var o=n("23e7"),i=n("4930"),r=n("d039"),s=n("7418"),a=n("7b0b"),c=!i||r((function(){s.f(1)}));o({target:"Object",stat:!0,forced:c},{getOwnPropertySymbols:function(t){var e=s.f;return e?e(a(t)):[]}})},"635f":function(t,e,n){"use strict";n("6c5b")},"6c5b":function(t,e,n){},7286:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXr5djn4dTp49bt59rT6LKxAAACnElEQVQozw3NUUwScRzA8d8R6MF8YMIx8uk47hDSJbj14IPzOGc7jPLvwTGg5uAYDbe2tt56cLtznvEnS6yDqCcEaWi91DvrbLJZz7b1aFtz1aO+2OZWvn+/+4CHeB6BMYaqBLfjPNRY6RFT2JJYby+uAk4WUTrtlmJ4hgPYb2q1XGDQjaK8pgJHvqNaAX+KyuIkDXpgQinb46nOulnn4b5laUHTxLfseeArAoNOeJlOIjdoal0n1FA7tKFv5roK+YaHOqP3P0XyKHPHY+MhTRe5uCZnKhtJKw2eSrSoBDPLtpZuNcFNJcFyiCMxOaaHIfXz1e8HQbWLySrBQ4x0x1qlhnHlnz2HQEC6TNb0gTHXa7IKhcaHqkE015hk9whA0YeWiLIXf7Fa2CZo3DjqjB4tTuF8jIcbfcEx5z/w4sXpQhXW+ju0cqh7icTFmRMaG+v6CIvTjcSpHcH8JEsF3EPh3fRthYdVLLgI2fWXm85/pGFE4l046s70L+yKCcirGFR+jbpy3kMmiCGHrSezVONsn1RBixncyk2PcVWk7DlgxHo8iZwDyq5uAUD854dZhdIFYzKoQig2haUKi1lVufz2RZUZPZ41n/hrOQB6h0Hhg8I367FNoEHgeM/KY7szSeQwD8q2WE3HM35ZLl0K1MJiOtHIkBclRQUwZnyOWcNsRQQgVLj1PSqkjF9DsoOSaSg3iinKzvfmgsNFFfpP/2T3GLGvL4fHEfwIX1sVvXcPqLztehWGcfn9nI2U9nTfCgJPe/jFPLZwgVEzimBgAm0VIyK2tt1cE/AzQdLK+SxLSQ4aDCZnnId94OG2S1XwvnTbNk/ZnhyRCQT+sZM6z9g6LXL1BOBe+zJySiFkHAINCtnQokbCJ/apCv0foqPiZVfhpywAAAAASUVORK5CYII="},7450:function(t,e,n){},"746f":function(t,e,n){var o=n("428f"),i=n("1a2d"),r=n("e538"),s=n("9bf2").f;t.exports=function(t){var e=o.Symbol||(o.Symbol={});i(e,t)||s(e,t,{value:r.f(t)})}},7715:function(t,e,n){},"7abd":function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXm9PXq+Pno9vfs+vttWKBGAAACPElEQVQozw3RQWrbQACF4TfCMjPqZgIj4RRaxsZKE0PuMBZ2cLKaCI9RDAXFmJJknUWWI1O1UlamOMHJSjGkuFn3AD2Cr9CepDrAg+/xIxK4QwIqHHQkUhQ/WuphInVIFBojl8QXc012Tgq4RTtVHWVLZVFh1tEoI91uiN4joCqde8Ukn/zGM1B2W4ari2PtTwyw55Ld+Wways54qhGPyS6FzbIT3lIY8WwWdCq56Yolx6KmSKzoqrsCB5heAp4TGNQWJ1Pc6XlE5jQD5OlIX9I47A9uiUQcPQxcury/ToyxWJG/za6ki88crxKPocKS59Sl3EtBG7C89fCGflpfqoSzCeC4crioJA7F0V5+8MaSIk4qSCdwzpogmbqzEirVpGiS2dOVJvUuuqFEmhHao06KEpq+8lvHI14NJk3Qrmi9vBuRLwAz0qZB4hsDXQFXgtnlpDX3C6ug9BquSw/CYtwAzuTz5vuQNdr/YibhR68378ehZH30FSpjh71LpQkrsj+Q062h5WwZ5wlRoD6uQJy1DqvSYuCUapMBqT5YA4ZFw4KlWapxoUGlKWrx0eDQvmigu4WMYt97ruru98fYL8/0lG6CTOFcFWBhFK5gKw19h2JN808nh7xhkU6sWKLXdtkqBL6h+lULK5k19wFB/FldnGYf3LDeuf6IC2/MzJOSOP0qPxLqzaGIqtBcFIItrstkazONOkrc1D1czjuwEGESB4JJnjgSMN7PXAu7fZQpl1C236C+9mM4Af8P98Ch4R2TRl8AAAAASUVORK5CYII="},"802e":function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEUWGBkYGhsdHyAfISI1t/v6AAAB5ElEQVQozxXQsYoTURSA4f/EeycZsDgDdySDjihk38Hy3GWi2J2BCaziQhaiaB+tt9AFu1kwvYUPsIXNPoB9BAUfwAfwEUzKv/v4odGrroyp9/rUaC6rZ5skv5F8qPsfYYP+yKUMymmAEEeW55oUR4o8jr05KNzJ07yvB7w0KKfLwcQUSjfmMU0PJfPHFoEVU+ohNrcKMEzMQ23FDnVSI2dqtYWI7KlLu6vE4UnyvKc3SJuL7lBbeEEl42ItpGLjzIT8PRJCmkRjVpVpsbJFVN0687okJNZiHAr5Z7MV0BnGIDc+THM1zlbieBc1Fq+tH5BH+OpnbWkj40hSqC8Lw2TvFuF0SUFJCk2IytXbjeqcRAt6NHpnrUkUU4KRzZs8RCK8N/Akn2W04LwxMU/V7XK0bDyN2RxfDyx7I4h5vjZby72V8UnOWumZL3qtYc+8DTE0siSBMXGhywx2dMYPnQHbxdFZ7deiNGxCCtD/QWnbwDoGhRYPDzUdUA3krjpnkvdAgDN4ddLkEQSov9qjd42HaDjI34gEqS9TUueAk+sc4qg5ws407KQYKs8G1jv4xBlqBVk6cb4dISZIwVi1Jzu4+HLk6lyfUxkXvwy+1Q+4WVdHIhwfybZ6CWVhxMEhShOgsP/HOW0MvZJeFwAAAABJRU5ErkJggg=="},"82da":function(t,e,n){},"897d":function(t,e,n){(function(e,n){t.exports=n()})(window,(function(){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=9)}([function(t,e,n){var o=n(7);"string"===typeof o&&(o=[[t.i,o,""]]),o.locals&&(t.exports=o.locals);var i=n(10).default;i("56ca1821",o,!1,{})},function(t,e,n){var o=n(3),i=n(4),r=n(5);function s(t,e){return o(t)||i(t,e)||r()}t.exports=s},function(t,e){function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(e){return"function"===typeof Symbol&&"symbol"===n(Symbol.iterator)?t.exports=o=function(t){return n(t)}:t.exports=o=function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":n(t)},o(e)}t.exports=o},function(t,e){function n(t){if(Array.isArray(t))return t}t.exports=n},function(t,e){function n(t,e){var n=[],o=!0,i=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(o=(s=a.next()).done);o=!0)if(n.push(s.value),e&&n.length===e)break}catch(c){i=!0,r=c}finally{try{o||null==a["return"]||a["return"]()}finally{if(i)throw r}}return n}t.exports=n},function(t,e){function n(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}t.exports=n},function(t,e,n){"use strict";var o=n(0),i=n.n(o);i.a},function(t,e,n){e=t.exports=n(8)(!1),e.push([t.i,".vue-pull-to-wrapper[data-v-81faaf1a],\n.vue-pull-to-wrapper > .scroll-container[data-v-81faaf1a] {\n padding: 0;\n border: 0 none;\n margin: 0;\n}\n.vue-pull-to-wrapper[data-v-81faaf1a] {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -webkit-flex-direction: column;\n flex-direction: column;\n height: 100%;\n}\n.vue-pull-to-wrapper > .scroll-container[data-v-81faaf1a] {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n overflow-x: hidden;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n}\n.vue-pull-to-wrapper > .scroll-container > .bottom-filler[data-v-81faaf1a] {\n height: 0px;\n}\n.vue-pull-to-wrapper > .action-block[data-v-81faaf1a] {\n position: relative;\n width: 100%;\n}\n.vue-pull-to-wrapper > .action-block > .default-text[data-v-81faaf1a] {\n height: 100%;\n line-height: 50px;\n text-align: center;\n}\n.vue-pull-to-wrapper[data-v-81faaf1a],\n.vue-pull-to-wrapper > .action-block-bottom[data-v-81faaf1a],\n.vue-pull-to-wrapper > .scroll-container > .bottom-fill[data-v-81faaf1a] {\n -webkit-transition-timing-function: cubic-bezier(0, 0, 0, 1);\n transition-timing-function: cubic-bezier(0, 0, 0, 1);\n}\n",""])},function(t,e,n){"use strict";function o(t,e){var n=t[1]||"",o=t[3];if(!o)return n;if(e&&"function"===typeof btoa){var r=i(o),s=o.sources.map((function(t){return"/*# sourceURL="+o.sourceRoot+t+" */"}));return[n].concat(s).concat([r]).join("\n")}return[n].join("\n")}function i(t){var e=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),n="sourceMappingURL=data:application/json;charset=utf-8;base64,"+e;return"/*# "+n+" */"}t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=o(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n})).join("")},e.i=function(t,n){"string"===typeof t&&(t=[[null,t,""]]);for(var o={},i=0;i2&&void 0!==arguments[2]?arguments[2]:0;if(null==e)return t;var o,i="object"===("undefined"===typeof performance?"undefined":c()(performance))?performance:Date,r=null;return function(){var s=i.now();if(null!=r&&clearTimeout(r),o||(o=s),0!==n&&s-o>=n)t.apply(this,arguments),o=s;else{var a=this,c=Array.prototype.slice.call(arguments);r=setTimeout((function(){return r=null,t.apply(a,c)}),e)}}}var u=function(){var t=!1;try{window.addEventListener("test",e,{get passive(){return t=!0,!0}}),window.removeEventListener("test",e)}catch(n){t=!1}return t&&{passive:!0};function e(){}}();function f(t,e){var n=Object.create(t);return Object.assign(n,e),n}var d={pullText:"下拉刷新",triggerText:"释放更新",loadingText:"加载中...",doneText:"加载完成",failText:"加载失败",loadedStayTime:400,stayDistance:50,triggerDistance:70},h={pullText:"上拉加载",triggerText:"释放更新",loadingText:"加载中...",doneText:"加载完成",failText:"加载失败",loadedStayTime:400,stayDistance:50,triggerDistance:70},p="loaded-";function g(t,e,n,o){t.setProperty("transition-property",e||""),t.setProperty("transition-duration",n||""),t.setProperty("transition-delay",o||"")}function A(t){return"string"===typeof t&&t.startsWith(p)}function m(t,e){switch(e){case"pull":return t.pullText;case"trigger":return t.triggerText;case"loading":return t.loadingText;case"loaded-done":return t.doneText;default:return A(e)?t.failText:""}}var v={name:"vue-pull-to",props:{distanceIndex:{type:Number,default:2},topBlockHeight:{type:Number,default:50},bottomBlockHeight:{type:Number,default:50},wrapperHeight:{type:String,default:"100%"},topLoadMethod:Function,bottomLoadMethod:Function,isThrottleTopPull:{type:Boolean,default:!0},isThrottleBottomPull:{type:Boolean,default:!0},isThrottleScroll:{type:Boolean,default:!0},isTouchSensitive:{type:Boolean,default:!0},isScrollSensitive:{type:Boolean,default:!0},isTopBounce:{type:Boolean,default:!0},isBottomBounce:{type:Boolean,default:!0},isBottomKeepScroll:Boolean,topConfig:Object,bottomConfig:Object},data:function(){return{startY:null,startX:null,distance:0,diff:0,beforeDiff:0,state:"",shouldPullDown:!1,shouldPullUp:!1,shouldPassThroughEvent:!1,throttleEmitTopPull:null,throttleEmitBottomPull:null,throttleEmitScroll:null,throttleOnInfiniteScroll:null}},computed:{_topConfig:function(){return f(d,this.topConfig)},_bottomConfig:function(){return f(h,this.bottomConfig)},direction:{cache:!1,get:function(){var t=this.distance;return t>0?"down":t<0?"up":0}},topText:function(){return this.distance>0?m(this._topConfig,this.state):""},bottomText:function(){return this.distance<0?m(this._bottomConfig,this.state):""}},watch:{state:function(t){var e=this,n=this.distance,o=n>0?"top-state-change":"bottom-state-change";if(this.$emit(o,t),"string"!==typeof t||""===t);else if("loading"===t){var i=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"done",o=p+n;e.state=o,t=null};if(n>0?this.topLoadMethod(i):this.bottomLoadMethod(i),null===t)return;n>0?this.scrollTo(this._topConfig.stayDistance):this.scrollTo(-this._bottomConfig.stayDistance)}else if(A(t)&&null==this.startY){var r=n>0?this._topConfig:this._bottomConfig,s=this.$refs["bottom-filler"];if(s&&!(n>0)){var a=this.$refs["action-block-bottom"],c=this.diff;if(null!=a&&c<0){this.scrollTo(0,0);var l=a.style;l.setProperty("transform","translate(0, ".concat(c,"px)"));var u=s.style;u.setProperty("height","".concat(-c,"px")),this.$refs["scroll-container"].scrollTop-=c;var f="200ms",d="".concat(r.loadedStayTime,"ms");return g(l,"transform",f,d),g(u,"height",f,d),l.setProperty("transform","translate(0, 0)"),void u.setProperty("height","0px")}}this.scrollTo(0,200,r.loadedStayTime)}},isTouchSensitive:"updateTouchSensitivity",isScrollSensitive:"updateScrollSensitivity"},methods:{scrollTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.diff=t;var o=this.$refs["action-block-bottom"];if(null!=o){var i=o.style;i.getPropertyValue("transform")&&(g(i,"none"),i.setProperty("transform",""))}var r=this.$refs["bottom-filler"];if(null!=r){var s=r.style;s.getPropertyValue("height")&&(g(s,"none"),s.setProperty("height",""))}var a=this.$el.style;g(a,e>0||n>0?"transform":"none","".concat(e,"ms"),"".concat(n,"ms")),a.setProperty("transform","translate(0, ".concat(t,"px)"))},checkBottomReached:function(){var t=this.$refs["scroll-container"];return t.scrollTop+t.offsetHeight+1>=t.scrollHeight},handleTouchStart:function(t){var e=s()(t.touches,1),n=e[0];this.startY=n.clientY,this.startX=n.clientX,this.beforeDiff=this.diff;var o=this.$refs["scroll-container"];this.shouldPullDown=this.isTopBounce&&0===o.scrollTop,this.shouldPullUp=this.isBottomBounce&&this.checkBottomReached(),this.shouldPassThroughEvent=!1},handleTouchMove:function(t){var e=s()(t.touches,1),n=e[0],o=n.clientY,i=n.clientX,r=this.startY,a=this.startX,c=(o-r)/this.distanceIndex+this.beforeDiff,l=this.state;"loading"!==l||c*this.distance>0||(c=c<0?3e-308:-3e-308),this.distance=c;var u=this.shouldPassThroughEvent;if(Math.abs(o-r)0?this.shouldPullDown:this.shouldPullUp){var f;if(u||(t.preventDefault(),t.stopPropagation()),this.scrollTo(c,0),c>0){if(this.isThrottleTopPull?this.throttleEmitTopPull(this.diff):this.$emit("top-pull",this.diff),"function"!==typeof this.topLoadMethod)return;f=this._topConfig}else{if(this.isThrottleBottomPull?this.throttleEmitBottomPull(this.diff):this.$emit("bottom-pull",this.diff),"function"!==typeof this.bottomLoadMethod)return;f=this._bottomConfig}var d=Math.abs(c)1&&void 0!==arguments[1]?arguments[1]:0,o=arguments.length>2?arguments[2]:void 0;return l(t.$emit.bind(t,o),e,n)};this.throttleEmitTopPull=e(200,300,"top-pull"),this.throttleEmitBottomPull=e(200,300,"bottom-pull"),this.throttleEmitScroll=e(100,150,"scroll"),this.throttleOnInfiniteScroll=l((function(){t.checkBottomReached()&&t.$emit("infinite-scroll")}),400)},init:function(){this.createThrottleMethods(),this.bindEvents()}},mounted:function(){this.init()}},b=v;n(6);function y(t,e,n,o,i,r,s,a){var c,l="function"===typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),s?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},l._ssrRegister=c):i&&(c=a?function(){i.call(this,this.$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var f=l.beforeCreate;l.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:l}}var C=y(b,o,i,!1,null,"81faaf1a",null);C.options.__file="src/vue-pull-to.vue";var S=C.exports;e["default"]=S},function(t,e,n){"use strict";function o(t,e){for(var n=[],o={},i=0;in.parts.length&&(o.parts.length=n.parts.length)}else{var s=[];for(i=0;iB;B++)if((h||B in C)&&(v=C[B],b=S(v,B,y),t))if(e)k[B]=b;else if(b)switch(t){case 3:return!0;case 5:return v;case 6:return B;case 2:l(k,v)}else switch(t){case 4:return!1;case 7:l(k,v)}return f?-1:i||u?u:k}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},be50:function(t,e,n){"use strict";n("7450")},c513:function(t,e,n){var o=n("23e7"),i=n("1a2d"),r=n("d9b5"),s=n("0d51"),a=n("5692"),c=n("3d87"),l=a("symbol-to-string-registry");o({target:"Symbol",stat:!0,forced:!c},{keyFor:function(t){if(!r(t))throw TypeError(s(t)+" is not a symbol");if(i(l,t))return l[t]}})},cf68:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAD1BMVEXm5ubo6Ojp6enr6+vt7e1FnZagAAACrklEQVQ4yx1SixUbMQgT3AKAFwDcAfzpBN1/qMrJS5w7bCQhC6IGSUGYQJd6Ox9ZPXi1AGJBavhUTT0JjYPGAab9WcDYIxsmlnxkayX8mhxCmKHA75az5cfRbWybEExiu08xDSgGym0mwuf3j4SvHeQxDJJzh2zp4iOlrD8iOb4SXyC1wiOLRTcnrje+nGamFeXVKWkmzbFIPChkmJ6Fg7mBpV8n+JGOVCd4jv1thThkjeQGNeafpeV3rsEWLfyWc8tC9jOv6FQ8rRzHOOVB+jCYEUAJpDvh8xHNFm/Tm5p5lw94Pp3NhtKEfQsGvnXhowdZE73hPwxKvjDd4i4PCdd0fe3W5fO8ktAsUAacLgstpUw60JCiPLg2XpkgiqPIYYXJd9ksGIT3q+LlevypzItvO+s0F1dBzVr2QDMUkYmuyGcrIS44mVJ7JVKwQXjYuBYp0Uetecbswzsikzu3gUR8bJC/C8Gd/NAzI/xdUGOYQQHDZ8X2d5XuzGRUiXAi9si5CRgoiToRZPtzLJkd0FUHRHZwJf0BHT1sE7gcnh0jmKKlSSF4/GBirGk5+K9NKlGDCfc9JtPhg78JdabH0YQRKNZnJ8tFnPfXHJb4xum1TTCeEmyEdbyEJLjznMLHuFD2Y9NEkSleIBs7SiCbblhgctVi9ch++kDYnn1C9DA5TvdPsToXM55wI6k+8eKT1blwPTqWb5CFJ+7dTBmab+KHy+xwNtItXhZNSpHD2fxnynrxG3ZBKRe8KBpXk11AnadlccEhr9w1nBBvBylNkv7A8eqpGBCDqhitmWQXBjjdS6idr/QjXWLDeMzMbVDoJuM8zN7WenMZWXgZ2vX3F01J3jHZbwk1LRP+DWEvDJtOUoh/AIaBUz5VpWyhuyx4QtgL/NmgC6kM/JvNe+R/C/5aL7BKIbYAAAAASUVORK5CYII="},d0e3:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXh7eHl8eXj7+Pn8+eTbH1KAAACPElEQVQozxWPQWrbQABF/0xn3JFKQRTZOIuUsbCCbOgdRoYEOauxkYPcTRyTlPQWIxEltrsRwQ6hK9nEQek6F+gNTE/Q3qLLusv34cN7SH3mFicdYW4gNIhJWXPBRVXzjcFD0IqeU4o4PRbAIVjyico0vJpIifqPfL80QN9DAQY5ucRHE/hpHxBldXe9GilaHKcKMlj6pho2zXgkNdBl0oJ8kiF1DSiJF1ZHBJkQr0Dbux/5I42Zp4cFahJDFGeW6/QjBwmFY/Q7vZ2SnoOdW2parv/Cnm81+m0xrEfiVXQ3W4nOXIqVYi3l6AAQBwMFkViVBANMto4enXHPNTkHBB0oVj4r5vHzCWayrgBvxtygDlDB2CNDjd80ZInY69aKVYZcfJ8DW+fWuc+syEODALx+ojqoafHsthTI+ZW27PGpIeo/cR6YKcbqIuIFhHmBrzAovzIOOJk1ucvcDzrMRYGVBH2yvcAOf0KiKwfRovBI3tm/kW1eemtfNWwIIXE2mJNhvoszfmMBfRCv0OPwd2321uDW3nx2q/BDxFVeoN1g7a6Im8yRnoawa8kbdXnU0cHeTMxKfZGlJgvLb3sKsxgglQnDdAfvj9LUnqWRDo0GiUmPwyU7TAsD7wHeIW3Nfy1qVGKoE9NgJCdYCAexNRob9yCn4DAQmXtQuUtera6bEmTTXhZy6h856xi4mnEl6BI9mfISkLbtJyZIMJIAUd5ZOBEu88KRAk71yxfItj/hpIB0Errv4gO1os4/UICf+o3kkqwAAAAASUVORK5CYII="},d28b:function(t,e,n){var o=n("746f");o("iterator")},d784:function(t,e,n){"use strict";n("ac1f");var o=n("e330"),i=n("cb2d"),r=n("9263"),s=n("d039"),a=n("b622"),c=n("9112"),l=a("species"),u=RegExp.prototype;t.exports=function(t,e,n,f){var d=a(t),h=!s((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),p=h&&!s((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[l]=function(){return n},n.flags="",n[d]=/./[d]),n.exec=function(){return e=!0,null},n[d](""),!e}));if(!h||!p||n){var g=o(/./[d]),A=e(d,""[t],(function(t,e,n,i,s){var a=o(t),c=e.exec;return c===r||c===u.exec?h&&!s?{done:!0,value:g(e,n,i)}:{done:!0,value:a(n,e,i)}:{done:!1}}));i(String.prototype,t,A[0]),i(u,d,A[1])}f&&c(u[d],"sham",!0)}},d81d:function(t,e,n){"use strict";var o=n("23e7"),i=n("b727").map,r=n("1dde"),s=r("map");o({target:"Array",proto:!0,forced:!s},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},d9f5:function(t,e,n){"use strict";var o=n("23e7"),i=n("da84"),r=n("c65b"),s=n("e330"),a=n("c430"),c=n("83ab"),l=n("4930"),u=n("d039"),f=n("1a2d"),d=n("3a9b"),h=n("825a"),p=n("fc6a"),g=n("a04b"),A=n("577e"),m=n("5c6c"),v=n("7c73"),b=n("df75"),y=n("241c"),C=n("057f"),S=n("7418"),x=n("06cf"),B=n("9bf2"),w=n("37e8"),k=n("d1e7"),I=n("cb2d"),E=n("5692"),T=n("f772"),D=n("d012"),P=n("90e3"),U=n("b622"),O=n("e538"),Q=n("746f"),V=n("57b9"),M=n("d44e"),R=n("69f3"),F=n("b727").forEach,N=T("hidden"),L="Symbol",K="prototype",H=R.set,W=R.getterFor(L),z=Object[K],J=i.Symbol,G=J&&J[K],j=i.TypeError,q=i.QObject,Y=x.f,Z=B.f,X=C.f,$=k.f,_=s([].push),tt=E("symbols"),et=E("op-symbols"),nt=E("wks"),ot=!q||!q[K]||!q[K].findChild,it=c&&u((function(){return 7!=v(Z({},"a",{get:function(){return Z(this,"a",{value:7}).a}})).a}))?function(t,e,n){var o=Y(z,e);o&&delete z[e],Z(t,e,n),o&&t!==z&&Z(z,e,o)}:Z,rt=function(t,e){var n=tt[t]=v(G);return H(n,{type:L,tag:t,description:e}),c||(n.description=e),n},st=function(t,e,n){t===z&&st(et,e,n),h(t);var o=g(e);return h(n),f(tt,o)?(n.enumerable?(f(t,N)&&t[N][o]&&(t[N][o]=!1),n=v(n,{enumerable:m(0,!1)})):(f(t,N)||Z(t,N,m(1,{})),t[N][o]=!0),it(t,o,n)):Z(t,o,n)},at=function(t,e){h(t);var n=p(e),o=b(n).concat(dt(n));return F(o,(function(e){c&&!r(lt,n,e)||st(t,e,n[e])})),t},ct=function(t,e){return void 0===e?v(t):at(v(t),e)},lt=function(t){var e=g(t),n=r($,this,e);return!(this===z&&f(tt,e)&&!f(et,e))&&(!(n||!f(this,e)||!f(tt,e)||f(this,N)&&this[N][e])||n)},ut=function(t,e){var n=p(t),o=g(e);if(n!==z||!f(tt,o)||f(et,o)){var i=Y(n,o);return!i||!f(tt,o)||f(n,N)&&n[N][o]||(i.enumerable=!0),i}},ft=function(t){var e=X(p(t)),n=[];return F(e,(function(t){f(tt,t)||f(D,t)||_(n,t)})),n},dt=function(t){var e=t===z,n=X(e?et:p(t)),o=[];return F(n,(function(t){!f(tt,t)||e&&!f(z,t)||_(o,tt[t])})),o};l||(J=function(){if(d(G,this))throw j("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?A(arguments[0]):void 0,e=P(t),n=function(t){this===z&&r(n,et,t),f(this,N)&&f(this[N],e)&&(this[N][e]=!1),it(this,e,m(1,t))};return c&&ot&&it(z,e,{configurable:!0,set:n}),rt(e,t)},G=J[K],I(G,"toString",(function(){return W(this).tag})),I(J,"withoutSetter",(function(t){return rt(P(t),t)})),k.f=lt,B.f=st,w.f=at,x.f=ut,y.f=C.f=ft,S.f=dt,O.f=function(t){return rt(U(t),t)},c&&(Z(G,"description",{configurable:!0,get:function(){return W(this).description}}),a||I(z,"propertyIsEnumerable",lt,{unsafe:!0}))),o({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:J}),F(b(nt),(function(t){Q(t)})),o({target:L,stat:!0,forced:!l},{useSetter:function(){ot=!0},useSimple:function(){ot=!1}}),o({target:"Object",stat:!0,forced:!l,sham:!c},{create:ct,defineProperty:st,defineProperties:at,getOwnPropertyDescriptor:ut}),o({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:ft}),V(),M(J,L),D[N]=!0},df5e:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAATlBMVEXdzaHh0KPgz6LdzKDezqLczJ7ezZ/fz6Dcy5zi0aXdzZ3fz6Tfz57h0KDg0aLcyZrg0KXi0qPfzZ3j06bh0qbdyJbfzJrhz5/cxpLZwo0vDconAAAFn0lEQVRIxxyPW5LjMAwDAT5FybLl2JnM3P+i6+wXWVC1GoQGaD0h4XM3Q5o4T0HgABHBi6pZ4CDXXcUOFd6VhqC3Kch4EI8w9oMXwvU6m5LOOvcxKMOhuu8i5+5cMjcgb0t4F2uvOoeI3/MlT4IqsbtM9UG2AGSXUOsxzPevnXzK1CSHytZLvx7VdQmUcJsJCxJh2nmHW12Qod1qPjt8pih47uQ9aGpoNWF+yElCt60oH7vdIU/MnlRPSBLC/VwqxcKR8PFqnADN9ih5ufqnTlG9KwCofvs7kKYqOPHTNMQ93j9qNImFw9vjHPZ0F1m8hUUVB/Q/TrRYDMXr9++APMFARAt6sPh6wVAXzxUGhZsFUwCNfPZ8/72TAHebAhvuOuT3gO1Vn5d9Jd5sBRkg0p2seL9B7ulkjFJFIt9HPpLzdSzzMP3UcodAfMqC6pBuET2heHK1itZf1GZ1bi0BwOSxiCS8f/JBHMPMM4XCu3Mt1uz9lJbDJRqsKDZuikzkvskQEz6hanfDfO494azY5JpqPqOF1RhxD9XYEdaNxiqWqakKgmPfmrsta8KAiwF4HBxGVUJAgeSqQaiRRZJ7D2jedhw5t1CIAKxag0CBA60BpoBE6DcUi8O5AuM4pLfN0kHLmeu2B4e6HofqbgxsTWUw3PAODqa1oDtyzgXBlusi1KFdclMPE8O3jvLJ8RNi5/RxDQVzVmXA233XQ4KummunfxvLOZo+iH37964YjP06995CTdu9hsvErqJNzmf4wTrZ5DL7+qW9EoLnadrx67b8dUtrJnBXaT1N1uvPaYRKpWkq52xNsMN7vv4Sdryt/f4MhQoMCKnvVxikai1CQ6ZsnwJDc8+3Y/z8HcfvYQNq66pnAu1Hwa+3KNSwbNu8h3nDPqTl9fl7tx8fBhFfdS0o0F3JUKEZtZG9b/LZEM95lzaR30OnWPzroMxyZYdBIMoMnpN0J+m7/40+/P4soFSUjgzE7yY5zrMJuoZv0CmpVguYx1pprfb5HOviRVhHUVi/352shxCYrYBZxGtVaxiAz/MsaGSIsB7R1t4zJXH//n7RTTQQwxqcGEqEvklFHUgiO2GvJV+jAIPR+N29usWDoiSOVrN3XuqT1egQJAAU9EwslVJC8u0rGcy+WPqktJhjfMpatIG6CDAb0v5H34MGKqiVRue7GGLZ9Otxtt4JIrAhxBDwDuqI9JavcO0A7GlqFt219tH/bln9jBXzaKWAEqJV0CBxs5TwM8EvUPHaa8S86vN303MVWOsl3goDBHPWSoQ9c0kQmCKljfsKNH1+ofEOHW8a9a7glZGS8fPieL/SRSs0LAhI4FDTnXs1QYtubv2+IXPZpHB4bhivRexBkYKsSrYXNjvMUbVXpVJ+N6haV72c1k2zrnv5IYBMJBYTSZx0KTkoM3vY93rU/qs7zHplc/3d2ACadhFWByrn9LUk2IWb5JywvawTQc3F0iz+lgsBmInAIemBJtft2plKIlAFOgcroigrG2XlDsAzywQECNyaI8yr2ogoh7D4qJOYmZBzQgoZAM1PAcB8sDrr1uE5CDMR+nWSSVUGUCHAs8Vd21HOE0FzNj37pX0sLp9p3K8k++xxpkmzDxK64rmTSJnDUuIgTeslui6lg92jonZXI4jqNiUuzN4IagcKMjCniMGCODoo8T4tGDprn2hRww+NrnYiCwokd9iiWrkmbRfXYGLAoZrjO1lVQKExjUy5fIkgJURmz2uGFdASwwlWx5gDVTMK7hP6ISRVsFbYNmqtZL9MQtio285PaekyzDhZmtdexCYB0SZcTmBdhvdbmAEonk8hwcHQuZN1kVqrhyKoHHsnQhQAjF7SG533Da2S4LGjx1LoZqp7XeKQLDUBmYmydG0NQHpMeR5lRIRQc1PQ2ASMQflF4YBDMt0/GFlEHeRwCcEAAAAASUVORK5CYII="},e01a:function(t,e,n){"use strict";var o=n("23e7"),i=n("83ab"),r=n("da84"),s=n("e330"),a=n("1a2d"),c=n("1626"),l=n("3a9b"),u=n("577e"),f=n("9bf2").f,d=n("e893"),h=r.Symbol,p=h&&h.prototype;if(i&&c(h)&&(!("description"in p)||void 0!==h().description)){var g={},A=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:u(arguments[0]),e=l(p,this)?new h(t):void 0===t?h():h(t);return""===t&&(g[e]=!0),e};d(A,h),A.prototype=p,p.constructor=A;var m="Symbol(test)"==String(h("test")),v=s(p.toString),b=s(p.valueOf),y=/^Symbol\((.*)\)[^)]+$/,C=s("".replace),S=s("".slice);f(p,"description",{configurable:!0,get:function(){var t=b(this),e=v(t);if(a(g,t))return"";var n=m?S(e,7,-1):C(e,y,"$1");return""===n?void 0:n}}),o({global:!0,forced:!0},{Symbol:A})}},e160:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEX6+fP8+/X+/ff///kbczPAAAACeElEQVQozxXHQUgUUQAG4P8936yzs6VvZNZmN9QxVxiF9OLBoOjtOC6rQq6ygXjI2fCQBdXBg4egtzFGdqkoI+zgBFbqkm3hQSxhFYLotOcubeKhOnVYoqQy+m4f5g5TvpX0xHLbLY9j8SMhJp+Jk4LfAUS2kVRIjILmnwGBTX42PhCVlDJQkIiy2nWAvaJ1h+oFIpJ0hMSYVbyyrgDWshcMpMyL1brPDQKWmduO+KTJ6XeXAMK9Yc3FpD7atyNwg6kt5XgFpLPhjUTFSYVn2abDiugGShwD8JTVRJVo/2ecuKtRb/qc4BK+9TboFfokog4T2Fn6Oqdnsjk90NMS76Rji6E0NmwkPBAZ4Xbkw8KoDAkAbEhkc78e9omxxgxg6qa5HvMv+UZbCV0qmHnSHKl5TxeA2XTCGWekR581mwC5crBH81PznASqB9va3TbkYAjJPLfg5uBfXaJgIgIBv9eessRIhxe7PA7kj6uUMeMaQ/OEQOYRaaHlqH2Gxwsl6E/pwVY5FH7uCypBZPKvDQyVziYBrAkMURe2MOOOxG/eQpp5PF+bFzUV5HtPj9GeiVSNZDELleifYTp9NAjsoiXg4cW+4ZORkdSMB/B74aAdjhsVakhgkugsbmqcDSLEoWp8zRjrux3tli6Q5uM3E+maT99Wy0RiP7tboiuRZle2c6CYeL2kcUc1KvPtQKucogMadKVTQOJYCeyCYlhQQ/Q7Etfd/vBygy9iqy+LyHeF46saCYvW6ingsbA9RBWtdi8GgUXW+oQx9/wP6bAAX1TWeV+CbShZDlQ9xT6SoSxZmKRAkmXb60kzEzkRF+Ccb94BGspGJoN/UzmyR4wjXHAAAAAASUVORK5CYII="},e538:function(t,e,n){var o=n("b622");e.f=o},e9c4:function(t,e,n){var o=n("23e7"),i=n("d066"),r=n("2ba4"),s=n("c65b"),a=n("e330"),c=n("d039"),l=n("e8b5"),u=n("1626"),f=n("861d"),d=n("d9b5"),h=n("f36a"),p=n("4930"),g=i("JSON","stringify"),A=a(/./.exec),m=a("".charAt),v=a("".charCodeAt),b=a("".replace),y=a(1..toString),C=/[\uD800-\uDFFF]/g,S=/^[\uD800-\uDBFF]$/,x=/^[\uDC00-\uDFFF]$/,B=!p||c((function(){var t=i("Symbol")();return"[null]"!=g([t])||"{}"!=g({a:t})||"{}"!=g(Object(t))})),w=c((function(){return'"\\udf06\\ud834"'!==g("\udf06\ud834")||'"\\udead"'!==g("\udead")})),k=function(t,e){var n=h(arguments),o=e;if((f(e)||void 0!==t)&&!d(t))return l(e)||(e=function(t,e){if(u(o)&&(e=s(o,this,t,e)),!d(e))return e}),n[1]=e,r(g,null,n)},I=function(t,e,n){var o=m(n,e-1),i=m(n,e+1);return A(S,t)&&!A(x,i)||A(x,t)&&!A(S,o)?"\\u"+y(v(t,0),16):t};g&&o({target:"JSON",stat:!0,arity:3,forced:B||w},{stringify:function(t,e,n){var o=h(arguments),i=r(B?k:g,null,o);return w&&"string"==typeof i?b(i,C,I):i}})},ec0f:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAALVBMVEXx58b168ny6Mjz6sn06sf27Mvw5sTz6cbw5cLy58T37svv47/168v37s7t4Ltrv0//AAAEjUlEQVQ4yw2Ty2sTURxGf3dmOqmPxb0zmaStCnfmZpL6gpmbxIpUSMZGrSJkxsZiVZimNVaqMklrUnWTRq2KIDFWWx+IFrIRFxXEB4KIgqu6EBdu7M6FIPg32PW3+DhwDmBaYrK56KP4HGIsvg/uvOV0wK+qgBMlO9BujuH4DSJlOseqV5a/BEF97gt0ChyIPqBhXI9BtqtIB8vJB/LdCQ3OVjaLNX0g7+OmoI4e7nkemAqX6o8vg0yyQAyQS7IfgvFbI+6QyI3R4KELxw7kwM2ooQfyQigYnwY5MZbMlHI1DvnQVCoVcrt+R+bO7vPDif3ybNajwqAAe443dpfDsPt379VMWZzGRuqM79mQF+DUz9nt74bQ8J/O80MtVR51U02JKKmTCvTzLVf+vuxP/aHnPo9+2bW+zVsJ0Y630/CrfzX+b+UL+7O68Rczv+7lrMh5etfKXvhc2rk6KforxuoO2xB2tcxKfeXHt18rHOiHI/0RRjW/YGRDkHiwo3nzqL60o58C/bgRuaj7vk+QOwOhpnFNdjuWpKMCGP8Yapu9Ty5FTHKQLGSEFikjd9ADwP9ciaNNjc5qMH6w50AF/LKOsOYqsOG9GjKgc7ZXolqntm6fysJ6Ma6ll2CiqmOgE6O7x1wXExklbeqMYcwsmJmOoigt8SBg2WfilDSsAZJcBxDcrqtBXzFQJqZNHfscyIhoZlygAtyYAceah+elrFbI+46gEHDGiW878Kj7JpWyfhg6iyRMymV1MKBSeVpfgLHIohyTojI6sRyK1VpcqzVZeEBLOnA9unhGKUXPJDYtV9Dxuz4iA5xSkSWhCJdAiJR9PHlvfvbntbrR14FDqUNRAYDJmSnv3oKxuz5+7fiblgVJyYLTbgUM05P7LESkoXvyWNfb0aUU6FZizgQIa25VqKQZqFrk6v6BsqqIHlQmkQ9KrBhkC20/DrFsAFEEYLjM+lj2wYHXCwnNvZQR42XJ2iVK+UBXnI+OBE6oXpUUHiQ1yg0MhA03iwGbnOdQYc1CMiPIPQrCQJFH4L4BMFktAtKd9PN5gnU2Gra4KuK+V+mjtBRpAGIqDVe4wnSnajiFGO5d7smvhVQEMEYwqshrENIEaY7YeblJYtsb3QhAHWZCEKK67swwPMKw0If1Ta+6DgHmlgPzcUTSbi3rrv1Y64/BYEMPQ5SDHUOR022B4QRF6xLUPAaPX/V4IDI5N2BMwx4LqO1uO4j6uW7NvM7lATqGAxY/ZHVgoGZbu7SvkNR75x6qGSB23FdouENVwN7sCbewTdsXGrrnQ5ZZKOCOFtMTIzxlPu6eYmtL+nMFmoK7OeXajn86r9sqWbfmvHC4IagE5qfCPGZvLSq5F55hHIxJFa4/vRxHBlz0og4TojU1l/MOHJX17lybdF0mQhFO44JYUNt3UA473IXw/iPfDWtKG5oFSXIF5iU/VnyDSjxxeDk3jAXRyVyGTNB9FxH9qcFDNJpVbt2y9LytUXkK7Py6+z1RezHQqnoY8XcLimmd8dCnBhQCuaGpJCq3SoIlmYvLz8UkWhJw7T8k+Db/DYEKwgAAAABJRU5ErkJggg=="},fe9c:function(t,e,n){}}]); \ No newline at end of file diff --git a/app/src/main/assets/web/bookshelf/js/detail.8e2caf8f.js b/app/src/main/assets/web/bookshelf/js/detail.8e2caf8f.js new file mode 100644 index 000000000..da03dfa00 --- /dev/null +++ b/app/src/main/assets/web/bookshelf/js/detail.8e2caf8f.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["detail"],{"004c":function(t,e,n){"use strict";n("fe9c")},"057f":function(t,e,n){var o=n("c6b6"),i=n("fc6a"),r=n("241c").f,a=n("4dae"),s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return r(t)}catch(e){return a(s)}};t.exports.f=function(t){return s&&"Window"==o(t)?c(t):r(i(t))}},"05b3":function(t,e,n){},"0827":function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEUWGBkYGhsdHyAfISI1t/v6AAAB5ElEQVQozxXQsYoTURSA4f/EeycZsDgDdySDjihk38Hy3GWi2J2BCaziQhaiaB+tt9AFu1kwvYUPsIXNPoB9BAUfwAfwEUzKv/v4odGrroyp9/rUaC6rZ5skv5F8qPsfYYP+yKUMymmAEEeW55oUR4o8jr05KNzJ07yvB7w0KKfLwcQUSjfmMU0PJfPHFoEVU+ohNrcKMEzMQ23FDnVSI2dqtYWI7KlLu6vE4UnyvKc3SJuL7lBbeEEl42ItpGLjzIT8PRJCmkRjVpVpsbJFVN0687okJNZiHAr5Z7MV0BnGIDc+THM1zlbieBc1Fq+tH5BH+OpnbWkj40hSqC8Lw2TvFuF0SUFJCk2IytXbjeqcRAt6NHpnrUkUU4KRzZs8RCK8N/Akn2W04LwxMU/V7XK0bDyN2RxfDyx7I4h5vjZby72V8UnOWumZL3qtYc+8DTE0siSBMXGhywx2dMYPnQHbxdFZ7deiNGxCCtD/QWnbwDoGhRYPDzUdUA3krjpnkvdAgDN4ddLkEQSov9qjd42HaDjI34gEqS9TUueAk+sc4qg5ws407KQYKs8G1jv4xBlqBVk6cb4dISZIwVi1Jzu4+HLk6lyfUxkXvwy+1Q+4WVdHIhwfybZ6CWVhxMEhShOgsP/HOW0MvZJeFwAAAABJRU5ErkJggg=="},"0928":function(t,e,n){"use strict";n("7715")},1276:function(t,e,n){"use strict";var o=n("2ba4"),i=n("c65b"),r=n("e330"),a=n("d784"),s=n("44e7"),c=n("825a"),u=n("1d80"),f=n("4840"),l=n("8aa5"),A=n("50c4"),d=n("577e"),g=n("dc4a"),h=n("4dae"),p=n("14c3"),m=n("9263"),v=n("9f7f"),b=n("d039"),C=v.UNSUPPORTED_Y,y=4294967295,S=Math.min,I=[].push,B=r(/./.exec),x=r(I),w=r("".slice),k=!b((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));a("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=d(u(this)),a=void 0===n?y:n>>>0;if(0===a)return[];if(void 0===t)return[r];if(!s(t))return i(e,r,t,a);var c,f,l,A=[],g=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),p=0,v=new RegExp(t.source,g+"g");while(c=i(m,v,r)){if(f=v.lastIndex,f>p&&(x(A,w(r,p,c.index)),c.length>1&&c.index=a))break;v.lastIndex===c.index&&v.lastIndex++}return p===r.length?!l&&B(v,"")||x(A,""):x(A,w(r,p)),A.length>a?h(A,0,a):A}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:i(e,this,t,n)}:e,[function(e,n){var o=u(this),a=void 0==e?void 0:g(e,t);return a?i(a,e,o,n):i(r,d(o),e,n)},function(t,o){var i=c(this),a=d(t),s=n(r,i,a,o,r!==e);if(s.done)return s.value;var u=f(i,RegExp),g=i.unicode,h=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(C?"g":"y"),m=new u(C?"^(?:"+i.source+")":i,h),v=void 0===o?y:o>>>0;if(0===v)return[];if(0===a.length)return null===p(m,a)?[a]:[];var b=0,I=0,B=[];while(I1&&void 0!==arguments[1]?arguments[1]:{};switch(u=A.duration||1e3,i=A.offset||0,g=A.callback,r=A.easing||f,a=A.a11y||!1,s(A.container)){case"object":t=A.container;break;case"string":t=document.querySelector(A.container);break;default:t=window}switch(n=h(),s(l)){case"number":e=void 0,a=!1,o=n+l;break;case"object":e=l,o=p(e);break;case"string":e=document.querySelector(l),o=p(e);break}switch(c=o-n+i,s(A.duration)){case"number":u=A.duration;break;case"function":u=A.duration(c);break}requestAnimationFrame(v)}return C},A=l(),d=A,g=n("7286"),h=n.n(g),p=n("477e"),m=n.n(p),v=n("e160"),b=n.n(v),C=n("df5e"),y=n.n(C),S=n("ec0f"),I=n.n(S),B=n("b671"),x=n.n(B),w=n("5629"),k=n.n(w),E=n("d0e3"),D=n.n(E),U=n("4039"),Q=n.n(U),O=n("1e75"),V=n.n(O),F=n("1632"),N=n.n(F),P=n("7abd"),R=n.n(P),M=n("356c"),T=n.n(M),K=n("b165"),H=n.n(K),W=n("cf68"),z=n.n(W),J=n("4400"),L=n.n(J),G=n("802e"),q=n.n(G),j=n("0827"),Y=n.n(j),Z={themes:[{body:"#ede7da url("+h.a+") repeat",content:"#ede7da url("+m.a+") repeat",popup:"#ede7da url("+b.a+") repeat"},{body:"#ede7da url("+y.a+") repeat",content:"#ede7da url("+I.a+") repeat",popup:"#ede7da url("+x.a+") repeat"},{body:"#ede7da url("+k.a+") repeat",content:"#ede7da url("+D.a+") repeat",popup:"#ede7da url("+Q.a+") repeat"},{body:"#ede7da url("+V.a+") repeat",content:"#ede7da url("+N.a+") repeat",popup:"#ede7da url("+R.a+") repeat"},{body:"#ebcece repeat",content:"#f5e4e4 repeat",popup:"#faeceb repeat"},{body:"#ede7da url("+T.a+") repeat",content:"#ede7da url("+H.a+") repeat",popup:"#ede7da url("+z.a+") repeat"},{body:"#ede7da url("+L.a+") repeat",content:"#ede7da url("+q.a+") repeat",popup:"#ede7da url("+Y.a+") repeat"}],fonts:[{fontFamily:"Microsoft YaHei, PingFangSC-Regular, HelveticaNeue-Light, Helvetica Neue Light, sans-serif"},{fontFamily:"PingFangSC-Regular, -apple-system, Simsun"},{fontFamily:"Kaiti"}]},X=Z,$=(n("05b3"),{name:"PopCata",data:function(){return{isNight:6==this.$store.state.config.theme,index:this.$store.state.readingBook.index}},computed:{catalog:function(){return this.$store.state.readingBook.catalog},popCataVisible:function(){return this.$store.state.popCataVisible},theme:function(){return this.$store.state.config.theme},popupTheme:function(){return{background:X.themes[this.theme].popup}}},mounted:function(){},watch:{theme:function(t){this.isNight=6==t},popCataVisible:function(){this.$nextTick((function(){var t=this.$store.state.readingBook.index,e=this.$refs.cataData;d(this.$refs.cata[t],{container:e,duration:0})}))}},methods:{isSelected:function(t){return t==this.$store.state.readingBook.index},gotoChapter:function(t){this.index=this.catalog.indexOf(t),this.$store.commit("setPopCataVisible",!1),this.$store.commit("setContentLoading",!0),this.$emit("getContent",this.index)}}}),_=$,tt=(n("635f"),n("2877")),et=Object(tt["a"])(_,r,a,!1,null,"0aacaab8",null),nt=et.exports,ot=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"settings-wrapper",class:{night:t.isNight,day:!t.isNight},style:t.popupTheme},[n("div",{staticClass:"settings-title"},[t._v("设置")]),n("div",{staticClass:"setting-list"},[n("ul",[n("li",{staticClass:"theme-list"},[n("i",[t._v("阅读主题")]),t._l(t.themeColors,(function(e,o){return n("span",{key:o,ref:"themes",refInFor:!0,staticClass:"theme-item",class:{selected:t.selectedTheme==o},style:e,on:{click:function(e){return t.setTheme(o)}}},[o<6?n("em",{staticClass:"iconfont"},[t._v("")]):n("em",{staticClass:"moon-icon"},[t._v(t._s(t.moonIcon))])])}))],2),n("li",{staticClass:"font-list"},[n("i",[t._v("正文字体")]),t._l(t.fonts,(function(e,o){return n("span",{key:o,staticClass:"font-item",class:{selected:t.selectedFont==o},on:{click:function(e){return t.setFont(o)}}},[t._v(t._s(e))])}))],2),n("li",{staticClass:"font-size"},[n("i",[t._v("字体大小")]),n("div",{staticClass:"resize"},[n("span",{staticClass:"less",on:{click:t.lessFontSize}},[n("em",{staticClass:"iconfont"},[t._v("")])]),n("b"),t._v(" "),n("span",{staticClass:"lang"},[t._v(t._s(t.fontSize))]),n("b"),n("span",{staticClass:"more",on:{click:t.moreFontSize}},[n("em",{staticClass:"iconfont"},[t._v("")])])])]),t.$store.state.miniInterface?t._e():n("li",{staticClass:"read-width"},[n("i",[t._v("页面宽度")]),n("div",{staticClass:"resize"},[n("span",{staticClass:"less",on:{click:t.lessReadWidth}},[n("em",{staticClass:"iconfont"},[t._v("")])]),n("b"),t._v(" "),n("span",{staticClass:"lang"},[t._v(t._s(t.readWidth))]),n("b"),n("span",{staticClass:"more",on:{click:t.moreReadWidth}},[n("em",{staticClass:"iconfont"},[t._v("")])])])])])])])},it=[],rt=(n("82da"),n("b3f5")),at={name:"ReadSettings",data:function(){return{theme:0,isNight:6==this.$store.state.config.theme,moonIcon:"",themeColors:[{background:"rgba(250, 245, 235, 0.8)"},{background:"rgba(245, 234, 204, 0.8)"},{background:"rgba(230, 242, 230, 0.8)"},{background:"rgba(228, 241, 245, 0.8)"},{background:"rgba(245, 228, 228, 0.8)"},{background:"rgba(224, 224, 224, 0.8)"},{background:"rgba(0, 0, 0, 0.5)"}],moonIconStyle:{display:"inline",color:"rgba(255,255,255,0.2)"},fonts:["雅黑","宋体","楷书"]}},mounted:function(){var t=this.$store.state.config;this.theme=t.theme,6==this.theme?this.moonIcon="":this.moonIcon=""},computed:{config:function(){return this.$store.state.config},popupTheme:function(){return{background:X.themes[this.config.theme].popup}},selectedTheme:function(){return this.$store.state.config.theme},selectedFont:function(){return this.$store.state.config.font},fontSize:function(){return this.$store.state.config.fontSize},readWidth:function(){return this.$store.state.config.readWidth}},methods:{setTheme:function(t){6==t?(this.isNight=!0,this.moonIcon="",this.moonIconStyle.color="#ed4259"):(this.isNight=!1,this.moonIcon="",this.moonIconStyle.color="rgba(255,255,255,0.2)");var e=this.config;e.theme=t,this.$store.commit("setConfig",e),this.uploadConfig()},setFont:function(t){var e=this.config;e.font=t,this.$store.commit("setConfig",e),this.uploadConfig()},moreFontSize:function(){var t=this.config;t.fontSize<48&&(t.fontSize+=2),this.$store.commit("setConfig",t),this.uploadConfig()},lessFontSize:function(){var t=this.config;t.fontSize>12&&(t.fontSize-=2),this.$store.commit("setConfig",t),this.uploadConfig()},moreReadWidth:function(){var t=this.config;t.readWidth<960&&(t.readWidth+=160),this.$store.commit("setConfig",t),this.uploadConfig()},lessReadWidth:function(){var t=this.config;t.readWidth>640&&(t.readWidth-=160),this.$store.commit("setConfig",t),this.uploadConfig()},uploadConfig:function(){rt["a"].post("/saveReadConfig",this.config)}}},st=at,ct=(n("0928"),Object(tt["a"])(st,ot,it,!1,null,"65e7f0f4",null)),ut=ct.exports,ft=(n("d81d"),n("00b4"),n("466d"),{name:"pcontent",data:function(){return{}},props:["carray"],render:function(){var t=this,e=arguments[0],n=this.fontFamily,o=this.fontSize,i=n;return i.fontSize=o,this.show?e("div",[this.carray.map((function(n){return/]*src/.test(n)?e("img",{directives:[{name:"lazy",value:t.getImageSrc(n)}]}):e("p",{style:i,domProps:{innerHTML:n}})}))]):e("div")},computed:{show:function(){return this.$store.state.showContent},fontFamily:function(){return X.fonts[this.$store.state.config.font]},fontSize:function(){return this.$store.state.config.fontSize+"px"}},methods:{getImageSrc:function(t){var e=/]*src="([^"]*(?:"[^>]+\})?)"[^>]*>/;return t.match(e)[1]}},watch:{fontSize:function(){var t=this;t.$store.commit("setShowContent",!1),this.$nextTick((function(){t.$store.commit("setShowContent",!0)}))}}}),lt=ft,At=(n("004c"),Object(tt["a"])(lt,c,u,!1,null,"39060afc",null)),dt=At.exports;function gt(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}var ht=gt,pt=n("5ea3"),mt="object"==typeof self&&self&&self.Object===Object&&self,vt=pt["a"]||mt||Function("return this")(),bt=vt,Ct=function(){return bt.Date.now()},yt=Ct,St=/\s/;function It(t){var e=t.length;while(e--&&St.test(t.charAt(e)));return e}var Bt=It,xt=/^\s+/;function wt(t){return t?t.slice(0,Bt(t)+1).replace(xt,""):t}var kt=wt,Et=bt.Symbol,Dt=Et,Ut=Object.prototype,Qt=Ut.hasOwnProperty,Ot=Ut.toString,Vt=Dt?Dt.toStringTag:void 0;function Ft(t){var e=Qt.call(t,Vt),n=t[Vt];try{t[Vt]=void 0;var o=!0}catch(r){}var i=Ot.call(t);return o&&(e?t[Vt]=n:delete t[Vt]),i}var Nt=Ft,Pt=Object.prototype,Rt=Pt.toString;function Mt(t){return Rt.call(t)}var Tt=Mt,Kt="[object Null]",Ht="[object Undefined]",Wt=Dt?Dt.toStringTag:void 0;function zt(t){return null==t?void 0===t?Ht:Kt:Wt&&Wt in Object(t)?Nt(t):Tt(t)}var Jt=zt;function Lt(t){return null!=t&&"object"==typeof t}var Gt=Lt,qt="[object Symbol]";function jt(t){return"symbol"==typeof t||Gt(t)&&Jt(t)==qt}var Yt=jt,Zt=NaN,Xt=/^[-+]0x[0-9a-f]+$/i,$t=/^0b[01]+$/i,_t=/^0o[0-7]+$/i,te=parseInt;function ee(t){if("number"==typeof t)return t;if(Yt(t))return Zt;if(ht(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ht(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=kt(t);var n=$t.test(t);return n||_t.test(t)?te(t.slice(2),n?2:8):Xt.test(t)?Zt:+t}var ne=ee,oe="Expected a function",ie=Math.max,re=Math.min;function ae(t,e,n){var o,i,r,a,s,c,u=0,f=!1,l=!1,A=!0;if("function"!=typeof t)throw new TypeError(oe);function d(e){var n=o,r=i;return o=i=void 0,u=e,a=t.apply(r,n),a}function g(t){return u=t,s=setTimeout(m,e),f?d(t):a}function h(t){var n=t-c,o=t-u,i=e-n;return l?re(i,r-o):i}function p(t){var n=t-c,o=t-u;return void 0===c||n>=e||n<0||l&&o>=r}function m(){var t=yt();if(p(t))return v(t);s=setTimeout(m,h(t))}function v(t){return s=void 0,A&&o?d(t):(o=i=void 0,a)}function b(){void 0!==s&&clearTimeout(s),u=0,o=c=i=s=void 0}function C(){return void 0===s?a:v(yt())}function y(){var t=yt(),n=p(t);if(o=arguments,i=this,c=t,n){if(void 0===s)return g(c);if(l)return clearTimeout(s),s=setTimeout(m,e),d(c)}return void 0===s&&(s=setTimeout(m,e)),a}return e=ne(e)||0,ht(n)&&(f=!!n.leading,l="maxWait"in n,r=l?ie(ne(n.maxWait)||0,e):r,A="trailing"in n?!!n.trailing:A),y.cancel=b,y.flush=C,y}var se=ae,ce="Expected a function";function ue(t,e,n){var o=!0,i=!0;if("function"!=typeof t)throw new TypeError(ce);return ht(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),se(t,e,{leading:o,maxWait:e,trailing:i})}var fe=ue,le={components:{PopCata:nt,Pcontent:dt,ReadSettings:ut},created:function(){var t=JSON.parse(localStorage.getItem("config"));null!=t&&this.$store.commit("setConfig",t)},beforeCreate:function(){var t=JSON.parse(localStorage.getItem("config"));null!=t&&this.$store.commit("setConfig",t)},mounted:function(){var t=this;this.loading=this.$loading({target:this.$refs.content,lock:!0,text:"正在获取内容",spinner:"el-icon-loading",background:"rgba(0,0,0,0)"});var e=this,n=sessionStorage.getItem("bookUrl"),o=sessionStorage.getItem("bookName"),i=sessionStorage.getItem("bookAuthor"),r=Number(sessionStorage.getItem("chapterIndex")||0),a=JSON.parse(localStorage.getItem(n));(null==a||r>0)&&(a={bookName:o,bookAuthor:i,bookUrl:n,index:r},localStorage.setItem(n,JSON.stringify(a))),this.getCatalog(n).then((function(n){a.catalog=n.data.data,e.$store.commit("setReadingBook",a);var o=e.$store.state.readingBook.index||0;t.getContent(o),window.addEventListener("keyup",t.handleKeyPress),window.addEventListener("scroll",t.handleScroll,{passive:!0})}),(function(t){throw e.loading.close(),e.$message.error("获取书籍目录失败"),t}))},destroyed:function(){window.removeEventListener("keyup",this.handleKeyPress),window.removeEventListener("scroll",this.handleScroll),this.readSettingsVisible=!1,this.popCataVisible=!1},watch:{chapterData:function(){this.$store.commit("setContentLoading",!1)},theme:function(t){this.isNight=6==t},bodyColor:function(t){this.bodyTheme.background=t},chapterColor:function(t){this.chapterTheme.background=t},readWidth:function(t){this.chapterTheme.width=t;var e=-((parseInt(t)+130)/2+68)+"px",n=-((parseInt(t)+130)/2+52)+"px";this.leftBarTheme.marginLeft=e,this.rightBarTheme.marginRight=n},popupColor:function(t){this.leftBarTheme.background=t,this.rightBarTheme.background=t},readSettingsVisible:function(t){if(!t){var e=JSON.stringify(this.$store.state.config);localStorage.setItem("config",e)}}},data:function(){return{noPoint:!0,showToolBar:!1,chapterData:[],oldScrollTop:0}},computed:{catalog:function(){return this.$store.state.catalog},windowHeight:function(){return window.innerHeight},contentHeight:function(){return this.$refs.content.offsetHeight},popCataVisible:{get:function(){return this.$store.state.popCataVisible},set:function(t){this.$store.commit("setPopCataVisible",t)}},readSettingsVisible:{get:function(){return this.$store.state.readSettingsVisible},set:function(t){this.$store.commit("setReadSettingsVisible",t)}},config:function(){return this.$store.state.config},theme:function(){return this.config.theme},bodyColor:function(){return X.themes[this.config.theme].body},chapterColor:function(){return X.themes[this.config.theme].content},popupColor:function(){return X.themes[this.config.theme].popup},isNight:function(){return 6==this.$store.state.config.theme},readWidth:function(){return this.$store.state.miniInterface?window.innerWidth+"px":this.$store.state.config.readWidth-130+"px"},popupWidth:function(){return this.$store.state.miniInterface?window.innerWidth-33:this.$store.state.config.readWidth-33},bodyTheme:function(){return{background:X.themes[this.$store.state.config.theme].body}},chapterTheme:function(){return{background:X.themes[this.$store.state.config.theme].content,width:this.readWidth}},leftBarTheme:function(){return{background:X.themes[this.$store.state.config.theme].popup,marginLeft:this.$store.state.miniInterface?0:-(this.$store.state.config.readWidth/2+68)+"px",display:this.$store.state.miniInterface&&!this.showToolBar?"none":"block"}},rightBarTheme:function(){return{background:X.themes[this.$store.state.config.theme].popup,marginRight:this.$store.state.miniInterface?0:-(this.$store.state.config.readWidth/2+52)+"px",display:this.$store.state.miniInterface&&!this.showToolBar?"none":"block"}},show:function(){return this.$store.state.showContent}},methods:{getCatalog:function(t){return rt["a"].get("/getChapterList?url="+encodeURIComponent(t))},getContent:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e&&(this.$store.commit("setShowContent",!1),this.loading.visible||(this.loading=this.$loading({target:this.$refs.content,lock:!0,text:"正在获取内容",spinner:"el-icon-loading",background:"rgba(0,0,0,0)"})),d(this.$refs.top,{duration:0}));var o=sessionStorage.getItem("bookUrl"),i=JSON.parse(localStorage.getItem(o));i.index=t,localStorage.setItem(o,JSON.stringify(i)),this.$store.state.readingBook.index=t,sessionStorage.setItem("chapterIndex",t);var r=this.$store.state.readingBook.catalog[t].title,a=this.$store.state.readingBook.catalog[t].index;this.saveReadingBookProgress(a,r),document.title=sessionStorage.getItem("bookName")+" | "+r;var s=this;rt["a"].get("/getBookContent?url="+encodeURIComponent(o)+"&index="+a).then((function(o){if(o.data.isSuccess){var i=o.data.data,a=i.split(/\n+/);s.updateChapterData({index:t,content:a,title:r},e,n)}else{s.$message.error("书源正文解析错误!");var c=["书源正文解析失败!"];s.updateChapterData({index:t,content:c,title:r},e,n)}if(s.$store.commit("setContentLoading",!0),s.loading.close(),s.noPoint=!1,s.$store.commit("setShowContent",!0),!o.data.isSuccess)throw o.data}),(function(o){s.$message.error("获取章节内容失败");var i=["获取章节内容失败!"];throw s.updateChapterData({index:t,content:i,title:r},e,n),s.loading.close(),s.$store.commit("setShowContent",!0),o}))},toTop:function(){d(this.$refs.top)},toBottom:function(){d(this.$refs.bottom)},toNextChapter:function(){this.$store.commit("setContentLoading",!0);var t=this.$store.state.readingBook.index;t++,"undefined"!==typeof this.$store.state.readingBook.catalog[t]?(this.$message.info("下一章"),this.getContent(t)):this.$message.error("本章是最后一章")},toPreChapter:function(){this.$store.commit("setContentLoading",!0);var t=this.$store.state.readingBook.index;t--,"undefined"!==typeof this.$store.state.readingBook.catalog[t]?(this.$message.info("上一章"),this.getContent(t)):this.$message.error("本章是第一章")},saveReadingBookProgress:function(t,e){rt["a"].post("/saveBookProgress",{name:this.$store.state.readingBook.bookName,author:this.$store.state.readingBook.bookAuthor,durChapterIndex:t,durChapterPos:0,durChapterTime:(new Date).getTime(),durChapterTitle:e})},updateChapterData:function(t,e,n){e&&this.chapterData.splice(0),n?this.chapterData.push(t):this.chapterData.unshift(t)},loadMore:function(){var t=this.$store.state.readingBook.index;this.$store.state.readingBook.catalog.length-1>t&&this.getContent(t+1,!1)},loadBefore:function(){var t=this.$store.state.readingBook.index;00&&e+n>=.9*o&&this.loadMore(),this.oldScrollTop=e}),200),toShelf:function(){this.$router.push("/")},handleKeyPress:function(t){switch(t.key){case"ArrowLeft":t.stopPropagation(),t.preventDefault(),this.toPreChapter();break;case"ArrowRight":t.stopPropagation(),t.preventDefault(),this.toNextChapter();break;case"ArrowUp":t.stopPropagation(),t.preventDefault(),0===document.documentElement.scrollTop?this.$message.warning("已到达页面顶部"):d(0-document.documentElement.clientHeight+100);break;case"ArrowDown":t.stopPropagation(),t.preventDefault(),document.documentElement.clientHeight+document.documentElement.scrollTop===document.documentElement.scrollHeight?this.$message.warning("已到达页面底部"):d(document.documentElement.clientHeight-100);break}}}},Ae=le,de=(n("7192"),Object(tt["a"])(Ae,o,i,!1,null,"8cacf902",null));e["default"]=de.exports},5629:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXN383Q4tDP4c/R5NEInCCXAAACVElEQVQozw3Hv2sTYRwH4M/79pJ7bZL2bXqtERJ97zjUpbZDhg6pfC8qibi8hLR0EaJ0EFxaCSWDxjfpj1zrYBcRBKE6SAfBJWsx9i8IQfdQxDlKtA6t2OnhQfN3lbG7ytYRywF8rVoPCNO0X2sQOKDpAnSDK2VwkHgmh5yLGT8qASt+2KofnNt2Xg1gf1UF8AoM6052cRMNaloLZb7RKQGrKKji2OefsZF+VqIvos5ZLVIZCX61JcwUdk56wASVkgQvzPfvmT2twTSwyYaC/Pl/UhAHorFhBgZtL6XdAZRp1tkPwC1NLa9CWs5prLhI85NBQsLdXvjDymG3/EbYfQhVNYqc3TtktQhWLY3ko0QsdMbSEp+64v0NfxyqLbIGdh6M2xHHlLBGqKTyQo4E/nebBgBfe1GpdeywYXc8CT7D3cKXuMXkBy4xN6o5OuKamYp3DVI6uccO9lxgd2CAlJgI2BGgaAgIJV/TYwKqu3WFccjbMuA+bVkWgS2bfnlRbD1Eb1sDyWMmjKYIBgGAWbqKRicfvzBkBIz3V5AKnguWdglQEysQsSuVzOg6ALy1pitA5ykGCsc857BRYcgCSZyFOdvoOigSGoPc5Ta73mgxshIcQE5sHMHd9D7yqITw7JO+GHVMxjhzYLcKPSEgmz3fU+BRy3iYNtiXLaBssCW8KguReqkQOTb3MStV0Ugt4U1eIs1RZWRII6Ww8xeNNItyGGQI4ZMlpg/3lQtkl2JFnBp1imRyFe0kK2Id3PCslMgiQNMS77gvFeDhG3cSkYvheeg/e7ClIh5oh+IAAAAASUVORK5CYII="},"57b9":function(t,e,n){var o=n("c65b"),i=n("d066"),r=n("b622"),a=n("cb2d");t.exports=function(){var t=i("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,s=r("toPrimitive");e&&!e[s]&&a(e,s,(function(t){return o(n,this)}),{arity:1})}},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var o=n("e330"),i=n("1d80"),r=n("577e"),a=n("5899"),s=o("".replace),c="["+a+"]",u=RegExp("^"+c+c+"*"),f=RegExp(c+c+"*$"),l=function(t){return function(e){var n=r(i(e));return 1&t&&(n=s(n,u,"")),2&t&&(n=s(n,f,"")),n}};t.exports={start:l(1),end:l(2),trim:l(3)}},"5a47":function(t,e,n){var o=n("23e7"),i=n("4930"),r=n("d039"),a=n("7418"),s=n("7b0b"),c=!i||r((function(){a.f(1)}));o({target:"Object",stat:!0,forced:c},{getOwnPropertySymbols:function(t){var e=a.f;return e?e(s(t)):[]}})},"5ea3":function(t,e,n){"use strict";(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e["a"]=n}).call(this,n("c8ba"))},"635f":function(t,e,n){"use strict";n("6c5b")},"6c5b":function(t,e,n){},7156:function(t,e,n){var o=n("1626"),i=n("861d"),r=n("d2bb");t.exports=function(t,e,n){var a,s;return r&&o(a=e.constructor)&&a!==n&&i(s=a.prototype)&&s!==n.prototype&&r(t,s),t}},7192:function(t,e,n){"use strict";n("2cf2")},7286:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXr5djn4dTp49bt59rT6LKxAAACnElEQVQozw3NUUwScRzA8d8R6MF8YMIx8uk47hDSJbj14IPzOGc7jPLvwTGg5uAYDbe2tt56cLtznvEnS6yDqCcEaWi91DvrbLJZz7b1aFtz1aO+2OZWvn+/+4CHeB6BMYaqBLfjPNRY6RFT2JJYby+uAk4WUTrtlmJ4hgPYb2q1XGDQjaK8pgJHvqNaAX+KyuIkDXpgQinb46nOulnn4b5laUHTxLfseeArAoNOeJlOIjdoal0n1FA7tKFv5roK+YaHOqP3P0XyKHPHY+MhTRe5uCZnKhtJKw2eSrSoBDPLtpZuNcFNJcFyiCMxOaaHIfXz1e8HQbWLySrBQ4x0x1qlhnHlnz2HQEC6TNb0gTHXa7IKhcaHqkE015hk9whA0YeWiLIXf7Fa2CZo3DjqjB4tTuF8jIcbfcEx5z/w4sXpQhXW+ju0cqh7icTFmRMaG+v6CIvTjcSpHcH8JEsF3EPh3fRthYdVLLgI2fWXm85/pGFE4l046s70L+yKCcirGFR+jbpy3kMmiCGHrSezVONsn1RBixncyk2PcVWk7DlgxHo8iZwDyq5uAUD854dZhdIFYzKoQig2haUKi1lVufz2RZUZPZ41n/hrOQB6h0Hhg8I367FNoEHgeM/KY7szSeQwD8q2WE3HM35ZLl0K1MJiOtHIkBclRQUwZnyOWcNsRQQgVLj1PSqkjF9DsoOSaSg3iinKzvfmgsNFFfpP/2T3GLGvL4fHEfwIX1sVvXcPqLztehWGcfn9nI2U9nTfCgJPe/jFPLZwgVEzimBgAm0VIyK2tt1cE/AzQdLK+SxLSQ4aDCZnnId94OG2S1XwvnTbNk/ZnhyRCQT+sZM6z9g6LXL1BOBe+zJySiFkHAINCtnQokbCJ/apCv0foqPiZVfhpywAAAAASUVORK5CYII="},"746f":function(t,e,n){var o=n("428f"),i=n("1a2d"),r=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=o.Symbol||(o.Symbol={});i(e,t)||a(e,t,{value:r.f(t)})}},7715:function(t,e,n){},"7abd":function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXm9PXq+Pno9vfs+vttWKBGAAACPElEQVQozw3RQWrbQACF4TfCMjPqZgIj4RRaxsZKE0PuMBZ2cLKaCI9RDAXFmJJknUWWI1O1UlamOMHJSjGkuFn3AD2Cr9CepDrAg+/xIxK4QwIqHHQkUhQ/WuphInVIFBojl8QXc012Tgq4RTtVHWVLZVFh1tEoI91uiN4joCqde8Ukn/zGM1B2W4ari2PtTwyw55Ld+Wways54qhGPyS6FzbIT3lIY8WwWdCq56Yolx6KmSKzoqrsCB5heAp4TGNQWJ1Pc6XlE5jQD5OlIX9I47A9uiUQcPQxcury/ToyxWJG/za6ki88crxKPocKS59Sl3EtBG7C89fCGflpfqoSzCeC4crioJA7F0V5+8MaSIk4qSCdwzpogmbqzEirVpGiS2dOVJvUuuqFEmhHao06KEpq+8lvHI14NJk3Qrmi9vBuRLwAz0qZB4hsDXQFXgtnlpDX3C6ug9BquSw/CYtwAzuTz5vuQNdr/YibhR68378ehZH30FSpjh71LpQkrsj+Q062h5WwZ5wlRoD6uQJy1DqvSYuCUapMBqT5YA4ZFw4KlWapxoUGlKWrx0eDQvmigu4WMYt97ruru98fYL8/0lG6CTOFcFWBhFK5gKw19h2JN808nh7xhkU6sWKLXdtkqBL6h+lULK5k19wFB/FldnGYf3LDeuf6IC2/MzJOSOP0qPxLqzaGIqtBcFIItrstkazONOkrc1D1czjuwEGESB4JJnjgSMN7PXAu7fZQpl1C236C+9mM4Af8P98Ch4R2TRl8AAAAASUVORK5CYII="},"802e":function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEUWGBkYGhsdHyAfISI1t/v6AAAB5ElEQVQozxXQsYoTURSA4f/EeycZsDgDdySDjihk38Hy3GWi2J2BCaziQhaiaB+tt9AFu1kwvYUPsIXNPoB9BAUfwAfwEUzKv/v4odGrroyp9/rUaC6rZ5skv5F8qPsfYYP+yKUMymmAEEeW55oUR4o8jr05KNzJ07yvB7w0KKfLwcQUSjfmMU0PJfPHFoEVU+ohNrcKMEzMQ23FDnVSI2dqtYWI7KlLu6vE4UnyvKc3SJuL7lBbeEEl42ItpGLjzIT8PRJCmkRjVpVpsbJFVN0687okJNZiHAr5Z7MV0BnGIDc+THM1zlbieBc1Fq+tH5BH+OpnbWkj40hSqC8Lw2TvFuF0SUFJCk2IytXbjeqcRAt6NHpnrUkUU4KRzZs8RCK8N/Akn2W04LwxMU/V7XK0bDyN2RxfDyx7I4h5vjZby72V8UnOWumZL3qtYc+8DTE0siSBMXGhywx2dMYPnQHbxdFZ7deiNGxCCtD/QWnbwDoGhRYPDzUdUA3krjpnkvdAgDN4ddLkEQSov9qjd42HaDjI34gEqS9TUueAk+sc4qg5ws407KQYKs8G1jv4xBlqBVk6cb4dISZIwVi1Jzu4+HLk6lyfUxkXvwy+1Q+4WVdHIhwfybZ6CWVhxMEhShOgsP/HOW0MvZJeFwAAAABJRU5ErkJggg=="},"82da":function(t,e,n){},"8aa5":function(t,e,n){"use strict";var o=n("6547").charAt;t.exports=function(t,e,n){return e+(n?o(t,e).length:1)}},a434:function(t,e,n){"use strict";var o=n("23e7"),i=n("da84"),r=n("23cb"),a=n("5926"),s=n("07fa"),c=n("7b0b"),u=n("65f0"),f=n("8418"),l=n("1dde"),A=l("splice"),d=i.TypeError,g=Math.max,h=Math.min,p=9007199254740991,m="Maximum allowed length exceeded";o({target:"Array",proto:!0,forced:!A},{splice:function(t,e){var n,o,i,l,A,v,b=c(this),C=s(b),y=r(t,C),S=arguments.length;if(0===S?n=o=0:1===S?(n=0,o=C-y):(n=S-2,o=h(g(a(e),0),C-y)),C+n-o>p)throw d(m);for(i=u(b,o),l=0;lC-o+n;l--)delete b[l-1]}else if(n>o)for(l=C-o;l>y;l--)A=l+o-1,v=l+n-1,A in b?b[v]=b[A]:delete b[v];for(l=0;l2)if(u=v(u),e=B(u,0),43===e||45===e){if(n=B(u,2),88===n||120===n)return NaN}else if(48===e){switch(B(u,1)){case 66:case 98:o=2,i=49;break;case 79:case 111:o=8,i=55;break;default:return+u}for(r=I(u,2),a=r.length,s=0;si)return NaN;return parseInt(r,o)}return+u};if(a(b,!C(" 0o1")||!C("0b1")||C("+0x1"))){for(var k,E=function(t){var e=arguments.length<1?0:C(x(t)),n=this;return f(y,n)&&d((function(){m(n)}))?u(Object(e),n,E):e},D=o?g(C):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),U=0;D.length>U;U++)c(C,k=D[U])&&!c(E,k)&&p(E,k,h(C,k));E.prototype=y,y.constructor=E,s(i,b,E,{constructor:!0})}},b165:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXe3t7a2trc3Nzg4OCXP9lCAAACoklEQVQozwXBzU/TYBwA4N+QEr4CNbSFwcFuowSqMRvEAwShHWAYNsu7dS0dLnGUSWT4kZB4lGzE4VtcwgIDJqcOWLJxcv4BOoQZuCPxSNSD4WSWLJGL8XmAIiyo2RgJ4A1pxQQlOxRAszLTdnPu2oQGb05RC5slJld7ZAIfo4O44Bn1ud59F0BcjnYOa17Jhwc6EdiKettncsXjT1f8KUBZUW41pK0Jc1Az4dEV3rkkPBtDSZ83Blyt0kSf2PRjzIykoBwINisPbPPtljdVE9iAXRfUPkXLVIgYrCccp5g687NdZbcJ+xa5VE/HhTtT23IKsN5jj/pcUd0dTZNAqCVw72n4gOwnTOC0vvHfaauT8d9zAoRRfPpISZRVyUiw8ELzOG1b2DZpFzkSrHLhq52twDEdyZHwvp2j4uv/bjvOf23/AcEtTuJbY5Cp4YcAer1IGkUzOo2rn8LQOKjFJw3NTw24nprQXY5aF4wxcqcSdbFQ00H4xFl8Drx4X4CikvAM1tuR8bKIBCBoLnKN10KJG4zKAsc7c9WEB9gnCi6BhVjqoco6t20ILAJuVctvaEZK732cRHDRmGfuihOam0o2CHByUZ/epCcVlRs2wmCnMqsd6aSim3ibBJtm1LGyXW3Bb7tJCPlFtUG+SvPdeEUAB60lNdo+VQbLcwRNVtT68FsLcr1+NotgNihlpExS1V2SFgNbeC8bEhgm8sM17wSi6Us2gxVWJU/5GKBpandvfyYbU1yHCLpCgWGbbPXn40rehEsUXKIJr9DMKgICfjc4bl1YfvUhE/YIECGRqjCxSM9hrybAIkND5OeWfFZsXkxB+qDzb7pUQ3EfQ3Ml6EChEt3D+iS01VqC7EQ/Z/DuPQcz4yChoFQJce2Qr+NNAv0HxofmpXGqgHkAAAAASUVORK5CYII="},b4f8:function(t,e,n){var o=n("23e7"),i=n("d066"),r=n("1a2d"),a=n("577e"),s=n("5692"),c=n("3d87"),u=s("string-to-symbol-registry"),f=s("symbol-to-string-registry");o({target:"Symbol",stat:!0,forced:!c},{for:function(t){var e=a(t);if(r(u,e))return u[e];var n=i("Symbol")(e);return u[e]=n,f[n]=e,n}})},b671:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAD1BMVEX48dr48Nf58tv379X17NJtIBxUAAACFUlEQVQ4y1XRUZakMAgF0Af2AiDWApDZgHZqAV1nZv9rGh7Rj7Y8McUFEg1wvcMESMNVD/neU8Xcaz7nYYkYlYO6Ti82PBI4BvIEg1aj3wKwRvIMgZsUy5LdhCawPFh1sZs4SrlyN9fQKpv8s5dgZ2eLyqqJiu+WkCmUEybXkm3INS01WAiv0PapJ0CZc0SJQUzcWnZYbOOY20iFD8Bk+/j2A3wNxH7GdShFYS5ff237kXh9I9zSkQmIAhOsOSVfJ6DIXTMDaPnzkRJ92S1BQQmXl5LdirgRLLDdcYqcGPwe3QN4xCBiGNbrqq9wpW1XCecChwaQdVOsRDpPCpeoolPdxeXp3WNB9PHVzWBHlygy4NJCCrFHREv6bDt0VGwJZASkpONmm1UseGeFKAQexgaAkrfYWl3AGxWOLL2AIMBNbCXpktmS3k3vHeYjGCPBa43wJTurO3ZFVpQSJdAZGLoHTyk1upkjxMEaIxum3iIARcCa5kSkFAW5fi1mUlL9eyOsaanFmOMruwvEdE3ZYzsRSzo5ewRLXyVPPEvknt8ij4DvCg2O7xOgBCUprEzV4z1WekSpUgI8DT2mrnSOXKRfQavwuKA1F+tFnMKdJSUpMA7wQAifWRkMgjUKKZE4lBl6MCM4B1pq1P4uIjDE6Pq6rL0FnW1nIFmta5vrSvq/Ch4tpqG/ZNyyWa5jZPktq81eYv8Bt5s4iFITOp4AAAAASUVORK5CYII="},b727:function(t,e,n){var o=n("0366"),i=n("e330"),r=n("44ad"),a=n("7b0b"),s=n("07fa"),c=n("65f0"),u=i([].push),f=function(t){var e=1==t,n=2==t,i=3==t,f=4==t,l=6==t,A=7==t,d=5==t||l;return function(g,h,p,m){for(var v,b,C=a(g),y=r(C),S=o(h,p),I=s(y),B=0,x=m||c,w=e?x(g,I):n||A?x(g,0):void 0;I>B;B++)if((d||B in y)&&(v=y[B],b=S(v,B,C),t))if(e)w[B]=b;else if(b)switch(t){case 3:return!0;case 5:return v;case 6:return B;case 2:u(w,v)}else switch(t){case 4:return!1;case 7:u(w,v)}return l?-1:i||f?f:w}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},c513:function(t,e,n){var o=n("23e7"),i=n("1a2d"),r=n("d9b5"),a=n("0d51"),s=n("5692"),c=n("3d87"),u=s("symbol-to-string-registry");o({target:"Symbol",stat:!0,forced:!c},{keyFor:function(t){if(!r(t))throw TypeError(a(t)+" is not a symbol");if(i(u,t))return u[t]}})},cf68:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAD1BMVEXm5ubo6Ojp6enr6+vt7e1FnZagAAACrklEQVQ4yx1SixUbMQgT3AKAFwDcAfzpBN1/qMrJS5w7bCQhC6IGSUGYQJd6Ox9ZPXi1AGJBavhUTT0JjYPGAab9WcDYIxsmlnxkayX8mhxCmKHA75az5cfRbWybEExiu08xDSgGym0mwuf3j4SvHeQxDJJzh2zp4iOlrD8iOb4SXyC1wiOLRTcnrje+nGamFeXVKWkmzbFIPChkmJ6Fg7mBpV8n+JGOVCd4jv1thThkjeQGNeafpeV3rsEWLfyWc8tC9jOv6FQ8rRzHOOVB+jCYEUAJpDvh8xHNFm/Tm5p5lw94Pp3NhtKEfQsGvnXhowdZE73hPwxKvjDd4i4PCdd0fe3W5fO8ktAsUAacLgstpUw60JCiPLg2XpkgiqPIYYXJd9ksGIT3q+LlevypzItvO+s0F1dBzVr2QDMUkYmuyGcrIS44mVJ7JVKwQXjYuBYp0Uetecbswzsikzu3gUR8bJC/C8Gd/NAzI/xdUGOYQQHDZ8X2d5XuzGRUiXAi9si5CRgoiToRZPtzLJkd0FUHRHZwJf0BHT1sE7gcnh0jmKKlSSF4/GBirGk5+K9NKlGDCfc9JtPhg78JdabH0YQRKNZnJ8tFnPfXHJb4xum1TTCeEmyEdbyEJLjznMLHuFD2Y9NEkSleIBs7SiCbblhgctVi9ch++kDYnn1C9DA5TvdPsToXM55wI6k+8eKT1blwPTqWb5CFJ+7dTBmab+KHy+xwNtItXhZNSpHD2fxnynrxG3ZBKRe8KBpXk11AnadlccEhr9w1nBBvBylNkv7A8eqpGBCDqhitmWQXBjjdS6idr/QjXWLDeMzMbVDoJuM8zN7WenMZWXgZ2vX3F01J3jHZbwk1LRP+DWEvDJtOUoh/AIaBUz5VpWyhuyx4QtgL/NmgC6kM/JvNe+R/C/5aL7BKIbYAAAAASUVORK5CYII="},d0e3:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEXh7eHl8eXj7+Pn8+eTbH1KAAACPElEQVQozxWPQWrbQABF/0xn3JFKQRTZOIuUsbCCbOgdRoYEOauxkYPcTRyTlPQWIxEltrsRwQ6hK9nEQek6F+gNTE/Q3qLLusv34cN7SH3mFicdYW4gNIhJWXPBRVXzjcFD0IqeU4o4PRbAIVjyico0vJpIifqPfL80QN9DAQY5ucRHE/hpHxBldXe9GilaHKcKMlj6pho2zXgkNdBl0oJ8kiF1DSiJF1ZHBJkQr0Dbux/5I42Zp4cFahJDFGeW6/QjBwmFY/Q7vZ2SnoOdW2parv/Cnm81+m0xrEfiVXQ3W4nOXIqVYi3l6AAQBwMFkViVBANMto4enXHPNTkHBB0oVj4r5vHzCWayrgBvxtygDlDB2CNDjd80ZInY69aKVYZcfJ8DW+fWuc+syEODALx+ojqoafHsthTI+ZW27PGpIeo/cR6YKcbqIuIFhHmBrzAovzIOOJk1ucvcDzrMRYGVBH2yvcAOf0KiKwfRovBI3tm/kW1eemtfNWwIIXE2mJNhvoszfmMBfRCv0OPwd2321uDW3nx2q/BDxFVeoN1g7a6Im8yRnoawa8kbdXnU0cHeTMxKfZGlJgvLb3sKsxgglQnDdAfvj9LUnqWRDo0GiUmPwyU7TAsD7wHeIW3Nfy1qVGKoE9NgJCdYCAexNRob9yCn4DAQmXtQuUtera6bEmTTXhZy6h856xi4mnEl6BI9mfISkLbtJyZIMJIAUd5ZOBEu88KRAk71yxfItj/hpIB0Errv4gO1os4/UICf+o3kkqwAAAAASUVORK5CYII="},d28b:function(t,e,n){var o=n("746f");o("iterator")},d784:function(t,e,n){"use strict";n("ac1f");var o=n("e330"),i=n("cb2d"),r=n("9263"),a=n("d039"),s=n("b622"),c=n("9112"),u=s("species"),f=RegExp.prototype;t.exports=function(t,e,n,l){var A=s(t),d=!a((function(){var e={};return e[A]=function(){return 7},7!=""[t](e)})),g=d&&!a((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[u]=function(){return n},n.flags="",n[A]=/./[A]),n.exec=function(){return e=!0,null},n[A](""),!e}));if(!d||!g||n){var h=o(/./[A]),p=e(A,""[t],(function(t,e,n,i,a){var s=o(t),c=e.exec;return c===r||c===f.exec?d&&!a?{done:!0,value:h(e,n,i)}:{done:!0,value:s(n,e,i)}:{done:!1}}));i(String.prototype,t,p[0]),i(f,A,p[1])}l&&c(f[A],"sham",!0)}},d81d:function(t,e,n){"use strict";var o=n("23e7"),i=n("b727").map,r=n("1dde"),a=r("map");o({target:"Array",proto:!0,forced:!a},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},d9f5:function(t,e,n){"use strict";var o=n("23e7"),i=n("da84"),r=n("c65b"),a=n("e330"),s=n("c430"),c=n("83ab"),u=n("4930"),f=n("d039"),l=n("1a2d"),A=n("3a9b"),d=n("825a"),g=n("fc6a"),h=n("a04b"),p=n("577e"),m=n("5c6c"),v=n("7c73"),b=n("df75"),C=n("241c"),y=n("057f"),S=n("7418"),I=n("06cf"),B=n("9bf2"),x=n("37e8"),w=n("d1e7"),k=n("cb2d"),E=n("5692"),D=n("f772"),U=n("d012"),Q=n("90e3"),O=n("b622"),V=n("e538"),F=n("746f"),N=n("57b9"),P=n("d44e"),R=n("69f3"),M=n("b727").forEach,T=D("hidden"),K="Symbol",H="prototype",W=R.set,z=R.getterFor(K),J=Object[H],L=i.Symbol,G=L&&L[H],q=i.TypeError,j=i.QObject,Y=I.f,Z=B.f,X=y.f,$=w.f,_=a([].push),tt=E("symbols"),et=E("op-symbols"),nt=E("wks"),ot=!j||!j[H]||!j[H].findChild,it=c&&f((function(){return 7!=v(Z({},"a",{get:function(){return Z(this,"a",{value:7}).a}})).a}))?function(t,e,n){var o=Y(J,e);o&&delete J[e],Z(t,e,n),o&&t!==J&&Z(J,e,o)}:Z,rt=function(t,e){var n=tt[t]=v(G);return W(n,{type:K,tag:t,description:e}),c||(n.description=e),n},at=function(t,e,n){t===J&&at(et,e,n),d(t);var o=h(e);return d(n),l(tt,o)?(n.enumerable?(l(t,T)&&t[T][o]&&(t[T][o]=!1),n=v(n,{enumerable:m(0,!1)})):(l(t,T)||Z(t,T,m(1,{})),t[T][o]=!0),it(t,o,n)):Z(t,o,n)},st=function(t,e){d(t);var n=g(e),o=b(n).concat(At(n));return M(o,(function(e){c&&!r(ut,n,e)||at(t,e,n[e])})),t},ct=function(t,e){return void 0===e?v(t):st(v(t),e)},ut=function(t){var e=h(t),n=r($,this,e);return!(this===J&&l(tt,e)&&!l(et,e))&&(!(n||!l(this,e)||!l(tt,e)||l(this,T)&&this[T][e])||n)},ft=function(t,e){var n=g(t),o=h(e);if(n!==J||!l(tt,o)||l(et,o)){var i=Y(n,o);return!i||!l(tt,o)||l(n,T)&&n[T][o]||(i.enumerable=!0),i}},lt=function(t){var e=X(g(t)),n=[];return M(e,(function(t){l(tt,t)||l(U,t)||_(n,t)})),n},At=function(t){var e=t===J,n=X(e?et:g(t)),o=[];return M(n,(function(t){!l(tt,t)||e&&!l(J,t)||_(o,tt[t])})),o};u||(L=function(){if(A(G,this))throw q("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?p(arguments[0]):void 0,e=Q(t),n=function(t){this===J&&r(n,et,t),l(this,T)&&l(this[T],e)&&(this[T][e]=!1),it(this,e,m(1,t))};return c&&ot&&it(J,e,{configurable:!0,set:n}),rt(e,t)},G=L[H],k(G,"toString",(function(){return z(this).tag})),k(L,"withoutSetter",(function(t){return rt(Q(t),t)})),w.f=ut,B.f=at,x.f=st,I.f=ft,C.f=y.f=lt,S.f=At,V.f=function(t){return rt(O(t),t)},c&&(Z(G,"description",{configurable:!0,get:function(){return z(this).description}}),s||k(J,"propertyIsEnumerable",ut,{unsafe:!0}))),o({global:!0,constructor:!0,wrap:!0,forced:!u,sham:!u},{Symbol:L}),M(b(nt),(function(t){F(t)})),o({target:K,stat:!0,forced:!u},{useSetter:function(){ot=!0},useSimple:function(){ot=!1}}),o({target:"Object",stat:!0,forced:!u,sham:!c},{create:ct,defineProperty:at,defineProperties:st,getOwnPropertyDescriptor:ft}),o({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:lt}),N(),P(L,K),U[T]=!0},df5e:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAATlBMVEXdzaHh0KPgz6LdzKDezqLczJ7ezZ/fz6Dcy5zi0aXdzZ3fz6Tfz57h0KDg0aLcyZrg0KXi0qPfzZ3j06bh0qbdyJbfzJrhz5/cxpLZwo0vDconAAAFn0lEQVRIxxyPW5LjMAwDAT5FybLl2JnM3P+i6+wXWVC1GoQGaD0h4XM3Q5o4T0HgABHBi6pZ4CDXXcUOFd6VhqC3Kch4EI8w9oMXwvU6m5LOOvcxKMOhuu8i5+5cMjcgb0t4F2uvOoeI3/MlT4IqsbtM9UG2AGSXUOsxzPevnXzK1CSHytZLvx7VdQmUcJsJCxJh2nmHW12Qod1qPjt8pih47uQ9aGpoNWF+yElCt60oH7vdIU/MnlRPSBLC/VwqxcKR8PFqnADN9ih5ufqnTlG9KwCofvs7kKYqOPHTNMQ93j9qNImFw9vjHPZ0F1m8hUUVB/Q/TrRYDMXr9++APMFARAt6sPh6wVAXzxUGhZsFUwCNfPZ8/72TAHebAhvuOuT3gO1Vn5d9Jd5sBRkg0p2seL9B7ulkjFJFIt9HPpLzdSzzMP3UcodAfMqC6pBuET2heHK1itZf1GZ1bi0BwOSxiCS8f/JBHMPMM4XCu3Mt1uz9lJbDJRqsKDZuikzkvskQEz6hanfDfO494azY5JpqPqOF1RhxD9XYEdaNxiqWqakKgmPfmrsta8KAiwF4HBxGVUJAgeSqQaiRRZJ7D2jedhw5t1CIAKxag0CBA60BpoBE6DcUi8O5AuM4pLfN0kHLmeu2B4e6HofqbgxsTWUw3PAODqa1oDtyzgXBlusi1KFdclMPE8O3jvLJ8RNi5/RxDQVzVmXA233XQ4KummunfxvLOZo+iH37964YjP06995CTdu9hsvErqJNzmf4wTrZ5DL7+qW9EoLnadrx67b8dUtrJnBXaT1N1uvPaYRKpWkq52xNsMN7vv4Sdryt/f4MhQoMCKnvVxikai1CQ6ZsnwJDc8+3Y/z8HcfvYQNq66pnAu1Hwa+3KNSwbNu8h3nDPqTl9fl7tx8fBhFfdS0o0F3JUKEZtZG9b/LZEM95lzaR30OnWPzroMxyZYdBIMoMnpN0J+m7/40+/P4soFSUjgzE7yY5zrMJuoZv0CmpVguYx1pprfb5HOviRVhHUVi/352shxCYrYBZxGtVaxiAz/MsaGSIsB7R1t4zJXH//n7RTTQQwxqcGEqEvklFHUgiO2GvJV+jAIPR+N29usWDoiSOVrN3XuqT1egQJAAU9EwslVJC8u0rGcy+WPqktJhjfMpatIG6CDAb0v5H34MGKqiVRue7GGLZ9Otxtt4JIrAhxBDwDuqI9JavcO0A7GlqFt219tH/bln9jBXzaKWAEqJV0CBxs5TwM8EvUPHaa8S86vN303MVWOsl3goDBHPWSoQ9c0kQmCKljfsKNH1+ofEOHW8a9a7glZGS8fPieL/SRSs0LAhI4FDTnXs1QYtubv2+IXPZpHB4bhivRexBkYKsSrYXNjvMUbVXpVJ+N6haV72c1k2zrnv5IYBMJBYTSZx0KTkoM3vY93rU/qs7zHplc/3d2ACadhFWByrn9LUk2IWb5JywvawTQc3F0iz+lgsBmInAIemBJtft2plKIlAFOgcroigrG2XlDsAzywQECNyaI8yr2ogoh7D4qJOYmZBzQgoZAM1PAcB8sDrr1uE5CDMR+nWSSVUGUCHAs8Vd21HOE0FzNj37pX0sLp9p3K8k++xxpkmzDxK64rmTSJnDUuIgTeslui6lg92jonZXI4jqNiUuzN4IagcKMjCniMGCODoo8T4tGDprn2hRww+NrnYiCwokd9iiWrkmbRfXYGLAoZrjO1lVQKExjUy5fIkgJURmz2uGFdASwwlWx5gDVTMK7hP6ISRVsFbYNmqtZL9MQtio285PaekyzDhZmtdexCYB0SZcTmBdhvdbmAEonk8hwcHQuZN1kVqrhyKoHHsnQhQAjF7SG533Da2S4LGjx1LoZqp7XeKQLDUBmYmydG0NQHpMeR5lRIRQc1PQ2ASMQflF4YBDMt0/GFlEHeRwCcEAAAAASUVORK5CYII="},e01a:function(t,e,n){"use strict";var o=n("23e7"),i=n("83ab"),r=n("da84"),a=n("e330"),s=n("1a2d"),c=n("1626"),u=n("3a9b"),f=n("577e"),l=n("9bf2").f,A=n("e893"),d=r.Symbol,g=d&&d.prototype;if(i&&c(d)&&(!("description"in g)||void 0!==d().description)){var h={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:f(arguments[0]),e=u(g,this)?new d(t):void 0===t?d():d(t);return""===t&&(h[e]=!0),e};A(p,d),p.prototype=g,g.constructor=p;var m="Symbol(test)"==String(d("test")),v=a(g.toString),b=a(g.valueOf),C=/^Symbol\((.*)\)[^)]+$/,y=a("".replace),S=a("".slice);l(g,"description",{configurable:!0,get:function(){var t=b(this),e=v(t);if(s(h,t))return"";var n=m?S(e,7,-1):y(e,C,"$1");return""===n?void 0:n}}),o({global:!0,constructor:!0,forced:!0},{Symbol:p})}},e160:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyAgMAAABjUWAiAAAADFBMVEX6+fP8+/X+/ff///kbczPAAAACeElEQVQozxXHQUgUUQAG4P8936yzs6VvZNZmN9QxVxiF9OLBoOjtOC6rQq6ygXjI2fCQBdXBg4egtzFGdqkoI+zgBFbqkm3hQSxhFYLotOcubeKhOnVYoqQy+m4f5g5TvpX0xHLbLY9j8SMhJp+Jk4LfAUS2kVRIjILmnwGBTX42PhCVlDJQkIiy2nWAvaJ1h+oFIpJ0hMSYVbyyrgDWshcMpMyL1brPDQKWmduO+KTJ6XeXAMK9Yc3FpD7atyNwg6kt5XgFpLPhjUTFSYVn2abDiugGShwD8JTVRJVo/2ecuKtRb/qc4BK+9TboFfokog4T2Fn6Oqdnsjk90NMS76Rji6E0NmwkPBAZ4Xbkw8KoDAkAbEhkc78e9omxxgxg6qa5HvMv+UZbCV0qmHnSHKl5TxeA2XTCGWekR581mwC5crBH81PznASqB9va3TbkYAjJPLfg5uBfXaJgIgIBv9eessRIhxe7PA7kj6uUMeMaQ/OEQOYRaaHlqH2Gxwsl6E/pwVY5FH7uCypBZPKvDQyVziYBrAkMURe2MOOOxG/eQpp5PF+bFzUV5HtPj9GeiVSNZDELleifYTp9NAjsoiXg4cW+4ZORkdSMB/B74aAdjhsVakhgkugsbmqcDSLEoWp8zRjrux3tli6Q5uM3E+maT99Wy0RiP7tboiuRZle2c6CYeL2kcUc1KvPtQKucogMadKVTQOJYCeyCYlhQQ/Q7Etfd/vBygy9iqy+LyHeF46saCYvW6ingsbA9RBWtdi8GgUXW+oQx9/wP6bAAX1TWeV+CbShZDlQ9xT6SoSxZmKRAkmXb60kzEzkRF+Ccb94BGspGJoN/UzmyR4wjXHAAAAAASUVORK5CYII="},e538:function(t,e,n){var o=n("b622");e.f=o},e9c4:function(t,e,n){var o=n("23e7"),i=n("d066"),r=n("2ba4"),a=n("c65b"),s=n("e330"),c=n("d039"),u=n("e8b5"),f=n("1626"),l=n("861d"),A=n("d9b5"),d=n("f36a"),g=n("4930"),h=i("JSON","stringify"),p=s(/./.exec),m=s("".charAt),v=s("".charCodeAt),b=s("".replace),C=s(1..toString),y=/[\uD800-\uDFFF]/g,S=/^[\uD800-\uDBFF]$/,I=/^[\uDC00-\uDFFF]$/,B=!g||c((function(){var t=i("Symbol")();return"[null]"!=h([t])||"{}"!=h({a:t})||"{}"!=h(Object(t))})),x=c((function(){return'"\\udf06\\ud834"'!==h("\udf06\ud834")||'"\\udead"'!==h("\udead")})),w=function(t,e){var n=d(arguments),o=e;if((l(e)||void 0!==t)&&!A(t))return u(e)||(e=function(t,e){if(f(o)&&(e=a(o,this,t,e)),!A(e))return e}),n[1]=e,r(h,null,n)},k=function(t,e,n){var o=m(n,e-1),i=m(n,e+1);return p(S,t)&&!p(I,i)||p(I,t)&&!p(S,o)?"\\u"+C(v(t,0),16):t};h&&o({target:"JSON",stat:!0,arity:3,forced:B||x},{stringify:function(t,e,n){var o=d(arguments),i=r(B?w:h,null,o);return x&&"string"==typeof i?b(i,y,k):i}})},ec0f:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAALVBMVEXx58b168ny6Mjz6sn06sf27Mvw5sTz6cbw5cLy58T37svv47/168v37s7t4Ltrv0//AAAEjUlEQVQ4yw2Ty2sTURxGf3dmOqmPxb0zmaStCnfmZpL6gpmbxIpUSMZGrSJkxsZiVZimNVaqMklrUnWTRq2KIDFWWx+IFrIRFxXEB4KIgqu6EBdu7M6FIPg32PW3+DhwDmBaYrK56KP4HGIsvg/uvOV0wK+qgBMlO9BujuH4DSJlOseqV5a/BEF97gt0ChyIPqBhXI9BtqtIB8vJB/LdCQ3OVjaLNX0g7+OmoI4e7nkemAqX6o8vg0yyQAyQS7IfgvFbI+6QyI3R4KELxw7kwM2ooQfyQigYnwY5MZbMlHI1DvnQVCoVcrt+R+bO7vPDif3ybNajwqAAe443dpfDsPt379VMWZzGRuqM79mQF+DUz9nt74bQ8J/O80MtVR51U02JKKmTCvTzLVf+vuxP/aHnPo9+2bW+zVsJ0Y630/CrfzX+b+UL+7O68Rczv+7lrMh5etfKXvhc2rk6KforxuoO2xB2tcxKfeXHt18rHOiHI/0RRjW/YGRDkHiwo3nzqL60o58C/bgRuaj7vk+QOwOhpnFNdjuWpKMCGP8Yapu9Ty5FTHKQLGSEFikjd9ADwP9ciaNNjc5qMH6w50AF/LKOsOYqsOG9GjKgc7ZXolqntm6fysJ6Ma6ll2CiqmOgE6O7x1wXExklbeqMYcwsmJmOoigt8SBg2WfilDSsAZJcBxDcrqtBXzFQJqZNHfscyIhoZlygAtyYAceah+elrFbI+46gEHDGiW878Kj7JpWyfhg6iyRMymV1MKBSeVpfgLHIohyTojI6sRyK1VpcqzVZeEBLOnA9unhGKUXPJDYtV9Dxuz4iA5xSkSWhCJdAiJR9PHlvfvbntbrR14FDqUNRAYDJmSnv3oKxuz5+7fiblgVJyYLTbgUM05P7LESkoXvyWNfb0aUU6FZizgQIa25VqKQZqFrk6v6BsqqIHlQmkQ9KrBhkC20/DrFsAFEEYLjM+lj2wYHXCwnNvZQR42XJ2iVK+UBXnI+OBE6oXpUUHiQ1yg0MhA03iwGbnOdQYc1CMiPIPQrCQJFH4L4BMFktAtKd9PN5gnU2Gra4KuK+V+mjtBRpAGIqDVe4wnSnajiFGO5d7smvhVQEMEYwqshrENIEaY7YeblJYtsb3QhAHWZCEKK67swwPMKw0If1Ta+6DgHmlgPzcUTSbi3rrv1Y64/BYEMPQ5SDHUOR022B4QRF6xLUPAaPX/V4IDI5N2BMwx4LqO1uO4j6uW7NvM7lATqGAxY/ZHVgoGZbu7SvkNR75x6qGSB23FdouENVwN7sCbewTdsXGrrnQ5ZZKOCOFtMTIzxlPu6eYmtL+nMFmoK7OeXajn86r9sqWbfmvHC4IagE5qfCPGZvLSq5F55hHIxJFa4/vRxHBlz0og4TojU1l/MOHJX17lybdF0mQhFO44JYUNt3UA473IXw/iPfDWtKG5oFSXIF5iU/VnyDSjxxeDk3jAXRyVyGTNB9FxH9qcFDNJpVbt2y9LytUXkK7Py6+z1RezHQqnoY8XcLimmd8dCnBhQCuaGpJCq3SoIlmYvLz8UkWhJw7T8k+Db/DYEKwgAAAABJRU5ErkJggg=="},fe9c:function(t,e,n){}}]); \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/api/ReaderProvider.kt b/app/src/main/java/io/legado/app/api/ReaderProvider.kt index ad1efda57..74b9e38c3 100644 --- a/app/src/main/java/io/legado/app/api/ReaderProvider.kt +++ b/app/src/main/java/io/legado/app/api/ReaderProvider.kt @@ -21,7 +21,8 @@ class ReaderProvider : ContentProvider() { private enum class RequestCode { SaveBookSource, SaveBookSources, DeleteBookSources, GetBookSource, GetBookSources, SaveRssSource, SaveRssSources, DeleteRssSources, GetRssSource, GetRssSources, - SaveBook, GetBookshelf, RefreshToc, GetChapterList, GetBookContent, GetBookCover + SaveBook, GetBookshelf, RefreshToc, GetChapterList, GetBookContent, GetBookCover, + SaveBookProgress } private val postBodyKey = "json" @@ -86,6 +87,9 @@ class ReaderProvider : ContentProvider() { RequestCode.SaveBook -> values?.let { BookController.saveBook(values.getAsString(postBodyKey)) } + RequestCode.SaveBookProgress -> values?.let { + BookController.saveBookProgress(values.getAsString(postBodyKey)) + } else -> throw IllegalStateException( "Unexpected value: " + RequestCode.values()[sMatcher.match(uri)].name ) diff --git a/app/src/main/java/io/legado/app/api/controller/BookController.kt b/app/src/main/java/io/legado/app/api/controller/BookController.kt index 9254585f1..fae581bdf 100644 --- a/app/src/main/java/io/legado/app/api/controller/BookController.kt +++ b/app/src/main/java/io/legado/app/api/controller/BookController.kt @@ -1,33 +1,26 @@ package io.legado.app.api.controller -import android.net.Uri -import android.util.Base64 import androidx.core.graphics.drawable.toBitmap -import androidx.documentfile.provider.DocumentFile import io.legado.app.api.ReturnData import io.legado.app.constant.PreferKey import io.legado.app.data.appDb import io.legado.app.data.entities.Book +import io.legado.app.data.entities.BookProgress import io.legado.app.data.entities.BookSource import io.legado.app.help.BookHelp import io.legado.app.help.CacheManager import io.legado.app.help.ContentProcessor -import io.legado.app.help.config.AppConfig import io.legado.app.help.glide.ImageLoader import io.legado.app.help.storage.AppWebDav import io.legado.app.model.BookCover import io.legado.app.model.ReadBook -import io.legado.app.model.localBook.EpubFile import io.legado.app.model.localBook.LocalBook -import io.legado.app.model.localBook.UmdFile import io.legado.app.model.webBook.WebBook import io.legado.app.ui.book.read.page.provider.ImageProvider import io.legado.app.utils.* import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking import splitties.init.appCtx -import java.io.File -import java.io.FileOutputStream object BookController { @@ -177,7 +170,6 @@ object BookController { var content: String? = BookHelp.getContent(book, chapter) if (content != null) { val contentProcessor = ContentProcessor.get(book.name, book.origin) - saveBookReadIndex(book, index) content = runBlocking { contentProcessor.getContent(book, chapter, content!!, includeTitle = false) .joinToString("\n") @@ -190,7 +182,6 @@ object BookController { content = runBlocking { WebBook.getContentAwait(this, bookSource, book, chapter).let { val contentProcessor = ContentProcessor.get(book.name, book.origin) - saveBookReadIndex(book, index) contentProcessor.getContent(book, chapter, it, includeTitle = false) .joinToString("\n") } @@ -222,20 +213,26 @@ object BookController { /** * 保存进度 */ - private fun saveBookReadIndex(book: Book, index: Int) { - book.durChapterIndex = index - book.durChapterTime = System.currentTimeMillis() - appDb.bookChapterDao.getChapter(book.bookUrl, index)?.let { - book.durChapterTitle = it.title - } - appDb.bookDao.update(book) - AppWebDav.uploadBookProgress(book) - if (ReadBook.book?.bookUrl == book.bookUrl) { - ReadBook.book = book - ReadBook.durChapterIndex = index - ReadBook.clearTextChapter() - ReadBook.loadContent(true) - } + fun saveBookProgress(postData: String?): ReturnData { + val returnData = ReturnData() + GSON.fromJsonObject(postData) + .onFailure { it.printOnDebug() } + .getOrNull()?.let { bookProgress -> + appDb.bookDao.getBook(bookProgress.name, bookProgress.author)?.let { book -> + book.durChapterIndex = bookProgress.durChapterIndex + book.durChapterPos = bookProgress.durChapterPos + book.durChapterTitle = bookProgress.durChapterTitle + book.durChapterTime = bookProgress.durChapterTime + appDb.bookDao.update(book) + AppWebDav.uploadBookProgress(bookProgress) + if (ReadBook.book?.bookUrl == book.bookUrl) { + ReadBook.book = book + ReadBook.durChapterIndex = book.durChapterIndex + } + return returnData.setData("") + } + } + return returnData.setErrorMsg("格式不对") } /** @@ -248,45 +245,7 @@ object BookController { val fileData = parameters["fileData"]?.firstOrNull() ?: return returnData.setErrorMsg("fileData 不能为空") kotlin.runCatching { - val defaultBookTreeUri = AppConfig.defaultBookTreeUri - if (defaultBookTreeUri.isNullOrBlank()) return returnData.setErrorMsg("没有设置书籍保存位置!") - val treeUri = Uri.parse(defaultBookTreeUri) - val fileBytes = - Base64.decode(fileData.substringAfter("base64,"), Base64.DEFAULT) - val uri = if (treeUri.isContentScheme()) { - val treeDoc = DocumentFile.fromTreeUri(appCtx, treeUri) - var doc = treeDoc!!.findFile(fileName) - if (doc == null) { - doc = treeDoc.createFile(FileUtils.getMimeType(fileName), fileName) - ?: throw SecurityException("Permission Denial") - } - appCtx.contentResolver.openOutputStream(doc.uri)!!.use { oStream -> - oStream.write(fileBytes) - } - doc.uri - } else { - val treeFile = File(treeUri.path!!) - val file = treeFile.getFile(fileName) - FileOutputStream(file).use { oStream -> - oStream.write(fileBytes) - } - Uri.fromFile(file) - } - val nameAuthor = LocalBook.analyzeNameAuthor(fileName) - val book = Book( - bookUrl = uri.toString(), - name = nameAuthor.first, - author = nameAuthor.second, - originName = fileName, - coverUrl = FileUtils.getPath( - appCtx.externalFiles, - "covers", - "${MD5Utils.md5Encode16(uri.toString())}.jpg" - ) - ) - if (book.isEpub()) EpubFile.upBookInfo(book) - if (book.isUmd()) UmdFile.upBookInfo(book) - appDb.bookDao.insert(book) + LocalBook.importFileOnLine(fileData, fileName) }.onFailure { return when (it) { is SecurityException -> returnData.setErrorMsg("需重新设置书籍保存位置!") diff --git a/app/src/main/java/io/legado/app/constant/BookType.kt b/app/src/main/java/io/legado/app/constant/BookType.kt index 848884275..55b1c442f 100644 --- a/app/src/main/java/io/legado/app/constant/BookType.kt +++ b/app/src/main/java/io/legado/app/constant/BookType.kt @@ -5,11 +5,12 @@ import androidx.annotation.IntDef object BookType { const val default = 0 // 0 文本 const val audio = 1 // 1 音频 - const val image = 2 //图片 + const val image = 2 // 2 图片 + const val file = 3 // 3 只提供下载服务的网站 const val local = "loc_book" @Target(AnnotationTarget.VALUE_PARAMETER) @Retention(AnnotationRetention.SOURCE) - @IntDef(default, audio, image) + @IntDef(default, audio, image, file) annotation class Type } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/constant/EventBus.kt b/app/src/main/java/io/legado/app/constant/EventBus.kt index 18be386c5..df3d6017a 100644 --- a/app/src/main/java/io/legado/app/constant/EventBus.kt +++ b/app/src/main/java/io/legado/app/constant/EventBus.kt @@ -28,4 +28,5 @@ object EventBus { const val TIP_COLOR = "tipColor" const val SOURCE_CHANGED = "sourceChanged" const val SEARCH_RESULT = "searchResult" + const val BOOK_URL_CHANGED = "bookUrlChanged" } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/AppDatabase.kt b/app/src/main/java/io/legado/app/data/AppDatabase.kt index 7e141d90a..1cb68c80d 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -20,7 +20,7 @@ val appDb by lazy { } @Database( - version = 48, + version = 49, exportSchema = true, entities = [Book::class, BookGroup::class, BookSource::class, BookChapter::class, ReplaceRule::class, SearchBook::class, SearchKeyword::class, Cookie::class, @@ -32,7 +32,8 @@ val appDb by lazy { AutoMigration(from = 44, to = 45), AutoMigration(from = 45, to = 46), AutoMigration(from = 46, to = 47), - AutoMigration(from = 47, to = 48) + AutoMigration(from = 47, to = 48), + AutoMigration(from = 48, to = 49) ] ) abstract class AppDatabase : RoomDatabase() { diff --git a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt index 45466f2a2..50acc0492 100644 --- a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt @@ -21,6 +21,7 @@ interface BaseSource : JsExtensions { var loginUrl: String? // 登录地址 var loginUi: String? // 登录UI var header: String? // 请求头 + var enabledCookieJar: Boolean? //启用cookieJar fun getTag(): String diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index 072fbe9a3..449d6eacc 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -154,6 +154,10 @@ data class Book( @IgnoredOnParcel override var tocHtml: String? = null + @Ignore + @IgnoredOnParcel + var downloadUrls: List? = null + fun getRealAuthor() = author.replace(AppPattern.authorRegex, "") fun getUnreadChapterNum() = max(totalChapterNum - durChapterIndex - 1, 0) diff --git a/app/src/main/java/io/legado/app/data/entities/BookChapter.kt b/app/src/main/java/io/legado/app/data/entities/BookChapter.kt index 124261a3f..ab840ce89 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookChapter.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookChapter.kt @@ -7,6 +7,7 @@ import androidx.room.Ignore import androidx.room.Index import com.github.liuyueyi.quick.transfer.ChineseUtils import io.legado.app.R +import io.legado.app.constant.AppLog import io.legado.app.constant.AppPattern import io.legado.app.data.appDb import io.legado.app.exception.RegexTimeoutException @@ -15,6 +16,7 @@ import io.legado.app.help.config.AppConfig import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.RuleDataInterface import io.legado.app.utils.* +import kotlinx.coroutines.CancellationException import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.Parcelize import splitties.init.appCtx @@ -93,7 +95,7 @@ data class BookChapter( 2 -> displayTitle = ChineseUtils.s2t(displayTitle) } } - if (useReplace && replaceRules != null) { + if (useReplace && replaceRules != null) kotlin.run { replaceRules.forEach { item -> if (item.pattern.isNotEmpty()) { try { @@ -112,7 +114,10 @@ data class BookChapter( } catch (e: RegexTimeoutException) { item.isEnabled = false appDb.replaceRuleDao.update(item) + } catch (e: CancellationException) { + return@run } catch (e: Exception) { + AppLog.put("${item.name}替换出错\n替换内容\n${displayTitle}", e) appCtx.toastOnUi("${item.name}替换出错") } } diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 2d1d164c7..6718ee799 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -13,6 +13,7 @@ import kotlinx.parcelize.Parcelize import splitties.init.appCtx import java.io.InputStream +@Suppress("unused") @Parcelize @TypeConverters(BookSource.Converters::class) @Entity( @@ -27,7 +28,7 @@ data class BookSource( var bookSourceName: String = "", // 分组 var bookSourceGroup: String? = null, - // 类型,0 文本,1 音频, 2 图片 + // 类型,0 文本,1 音频, 2 图片, 3 文件(指的是类似知轩藏书只提供下载的网站) @BookType.Type var bookSourceType: Int = 0, // 详情页url正则 @@ -38,6 +39,9 @@ data class BookSource( var enabled: Boolean = true, // 启用发现 var enabledExplore: Boolean = true, + // 启用okhttp CookieJAr 自动保存每次请求的cookie + @ColumnInfo(defaultValue = "0") + override var enabledCookieJar: Boolean? = false, // 并发率 override var concurrentRate: String? = null, // 请求头 @@ -158,7 +162,7 @@ data class BookSource( fun removeGroup(groups: String): BookSource { bookSourceGroup?.splitNotBlank(AppPattern.splitGroupRegex)?.toHashSet()?.let { - it.removeAll(groups.splitNotBlank(AppPattern.splitGroupRegex)) + it.removeAll(groups.splitNotBlank(AppPattern.splitGroupRegex).toSet()) bookSourceGroup = TextUtils.join(",", it) } return this @@ -190,6 +194,7 @@ data class BookSource( && equal(bookSourceComment, source.bookSourceComment) && enabled == source.enabled && enabledExplore == source.enabledExplore + && enabledCookieJar == source.enabledCookieJar && equal(header, source.header) && loginUrl == source.loginUrl && equal(exploreUrl, source.exploreUrl) diff --git a/app/src/main/java/io/legado/app/data/entities/HttpTTS.kt b/app/src/main/java/io/legado/app/data/entities/HttpTTS.kt index afcbae9bc..4ad644d73 100644 --- a/app/src/main/java/io/legado/app/data/entities/HttpTTS.kt +++ b/app/src/main/java/io/legado/app/data/entities/HttpTTS.kt @@ -24,6 +24,8 @@ data class HttpTTS( override var loginUrl: String? = null, override var loginUi: String? = null, override var header: String? = null, + @ColumnInfo(defaultValue = "0") + override var enabledCookieJar: Boolean? = false, var loginCheckJs: String? = null, @ColumnInfo(defaultValue = "0") var lastUpdateTime: Long = System.currentTimeMillis() diff --git a/app/src/main/java/io/legado/app/data/entities/RssSource.kt b/app/src/main/java/io/legado/app/data/entities/RssSource.kt index 8c3e98d46..822172cd0 100644 --- a/app/src/main/java/io/legado/app/data/entities/RssSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/RssSource.kt @@ -1,6 +1,7 @@ package io.legado.app.data.entities import android.os.Parcelable +import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Index import androidx.room.PrimaryKey @@ -19,6 +20,8 @@ data class RssSource( var sourceGroup: String? = null, var sourceComment: String? = null, var enabled: Boolean = true, + @ColumnInfo(defaultValue = "0") + override var enabledCookieJar: Boolean? = false, override var concurrentRate: String? = null, //并发率 override var header: String? = null, // 请求头 override var loginUrl: String? = null, // 登录地址 @@ -150,6 +153,7 @@ data class RssSource( style = doc.readString("$.style"), enableJs = doc.readBool("$.enableJs") ?: true, loadWithBaseUrl = doc.readBool("$.loadWithBaseUrl") ?: true, + enabledCookieJar = doc.readBool("$.enabledCookieJar") ?: false, customOrder = doc.readInt("$.customOrder") ?: 0 ) } diff --git a/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt index 9f3a0c9d0..cddba2c4f 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt @@ -16,5 +16,6 @@ data class BookInfoRule( var coverUrl: String? = null, var tocUrl: String? = null, var wordCount: String? = null, - var canReName: String? = null + var canReName: String? = null, + var downloadUrls: String? = null ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/ContentProcessor.kt b/app/src/main/java/io/legado/app/help/ContentProcessor.kt index e841f8844..466b348a6 100644 --- a/app/src/main/java/io/legado/app/help/ContentProcessor.kt +++ b/app/src/main/java/io/legado/app/help/ContentProcessor.kt @@ -12,6 +12,7 @@ import io.legado.app.help.config.ReadBookConfig import io.legado.app.utils.msg import io.legado.app.utils.replace import io.legado.app.utils.toastOnUi +import kotlinx.coroutines.CancellationException import splitties.init.appCtx import java.lang.ref.WeakReference import java.util.concurrent.CopyOnWriteArrayList @@ -135,7 +136,7 @@ class ContentProcessor private constructor( var mContent = content getContentReplaceRules().forEach { item -> if (item.pattern.isNotEmpty()) { - kotlin.runCatching { + try { mContent = if (item.isRegex) { mContent.replace( item.pattern.toRegex(), @@ -145,18 +146,15 @@ class ContentProcessor private constructor( } else { mContent.replace(item.pattern, item.replacement) } - }.onFailure { - when (it) { - is RegexTimeoutException -> { - item.isEnabled = false - appDb.replaceRuleDao.update(item) - return item.name + it.msg - } - else -> { - AppLog.put("${item.name}替换出错\n${it.localizedMessage}", it) - appCtx.toastOnUi("${item.name}替换出错") - } - } + } catch (e: RegexTimeoutException) { + item.isEnabled = false + appDb.replaceRuleDao.update(item) + return item.name + e.msg + } catch (e: CancellationException) { + return mContent + } catch (e: Exception) { + AppLog.put("${item.name}替换出错\n替换内容\n${mContent}", e) + appCtx.toastOnUi("${item.name}替换出错") } } } diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index e2c935f76..0d1c117a3 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -197,12 +197,10 @@ interface JsExtensions { *js实现读取cookie */ fun getCookie(tag: String, key: String? = null): String { - val cookie = CookieStore.getCookie(tag) - val cookieMap = CookieStore.cookieToMap(cookie) return if (key != null) { - cookieMap[key] ?: "" + CookieStore.getKey(tag, key) } else { - cookie + CookieStore.getCookie(tag) } } @@ -470,10 +468,8 @@ interface JsExtensions { * @return zip指定文件的数据 */ fun getZipByteArrayContent(url: String, path: String): ByteArray? { - val bytes = if (url.startsWith("http://") || url.startsWith("https://")) { - runBlocking { - return@runBlocking okHttpClient.newCallResponseBody { url(url) }.bytes() - } + val bytes = if (url.isAbsUrl()) { + AnalyzeUrl(url, source = getSource()).getByteArray() } else { StringUtils.hexStringToByte(url) } @@ -517,7 +513,7 @@ interface JsExtensions { str.isAbsUrl() -> runBlocking { var x = CacheManager.getByteArray(key) if (x == null) { - x = okHttpClient.newCallResponseBody { url(str) }.bytes() + x = AnalyzeUrl(str, source = getSource()).getByteArray() x.let { CacheManager.put(key, it) } diff --git a/app/src/main/java/io/legado/app/help/ReplaceAnalyzer.kt b/app/src/main/java/io/legado/app/help/ReplaceAnalyzer.kt index a8e126f9e..d714363b1 100644 --- a/app/src/main/java/io/legado/app/help/ReplaceAnalyzer.kt +++ b/app/src/main/java/io/legado/app/help/ReplaceAnalyzer.kt @@ -1,43 +1,47 @@ package io.legado.app.help import io.legado.app.data.entities.ReplaceRule +import io.legado.app.exception.NoStackTraceException import io.legado.app.utils.* object ReplaceAnalyzer { - fun jsonToReplaceRules(json: String): List { - val replaceRules = mutableListOf() - val items: List> = jsonPath.parse(json).read("$") - for (item in items) { - val jsonItem = jsonPath.parse(item) - jsonToReplaceRule(jsonItem.jsonString())?.let { - if (it.isValid()) { - replaceRules.add(it) + fun jsonToReplaceRules(json: String): Result> { + return kotlin.runCatching { + val replaceRules = mutableListOf() + val items: List> = jsonPath.parse(json).read("$") + for (item in items) { + val jsonItem = jsonPath.parse(item) + jsonToReplaceRule(jsonItem.jsonString()).getOrThrow().let { + if (it.isValid()) { + replaceRules.add(it) + } } } + replaceRules } - return replaceRules } - private fun jsonToReplaceRule(json: String): ReplaceRule? { - val replaceRule: ReplaceRule? = GSON.fromJsonObject(json.trim()).getOrNull() - runCatching { + fun jsonToReplaceRule(json: String): Result { + return runCatching { + val replaceRule: ReplaceRule? = + GSON.fromJsonObject(json.trim()).getOrNull() if (replaceRule == null || replaceRule.pattern.isBlank()) { val jsonItem = jsonPath.parse(json.trim()) val rule = ReplaceRule() rule.id = jsonItem.readLong("$.id") ?: System.currentTimeMillis() rule.pattern = jsonItem.readString("$.regex") ?: "" - if (rule.pattern.isEmpty()) return null + if (rule.pattern.isEmpty()) throw NoStackTraceException("格式不对") rule.name = jsonItem.readString("$.replaceSummary") ?: "" rule.replacement = jsonItem.readString("$.replacement") ?: "" rule.isRegex = jsonItem.readBool("$.isRegex") == true rule.scope = jsonItem.readString("$.useTo") rule.isEnabled = jsonItem.readBool("$.enable") == true rule.order = jsonItem.readInt("$.serialNumber") ?: 0 - return rule + return@runCatching rule } + return@runCatching replaceRule } - return replaceRule } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/SourceAnalyzer.kt b/app/src/main/java/io/legado/app/help/SourceAnalyzer.kt index b5c461f25..5fb5e8437 100644 --- a/app/src/main/java/io/legado/app/help/SourceAnalyzer.kt +++ b/app/src/main/java/io/legado/app/help/SourceAnalyzer.kt @@ -150,6 +150,7 @@ object SourceAnalyzer { source.customOrder = sourceAny.customOrder source.enabled = sourceAny.enabled source.enabledExplore = sourceAny.enabledExplore + source.enabledCookieJar = sourceAny.enabledCookieJar source.concurrentRate = sourceAny.concurrentRate source.header = sourceAny.header source.loginUrl = when (sourceAny.loginUrl) { @@ -219,6 +220,7 @@ object SourceAnalyzer { var customOrder: Int = 0, // 手动排序编号 var enabled: Boolean = true, // 是否启用 var enabledExplore: Boolean = true, // 启用发现 + var enabledCookieJar: Boolean = false, // 启用CookieJar var concurrentRate: String? = null, // 并发率 var header: String? = null, // 请求头 var loginUrl: Any? = null, // 登录规则 diff --git a/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt b/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt index 39aac0747..1ed311e2f 100644 --- a/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt +++ b/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt @@ -32,7 +32,7 @@ object SourceVerificationHelp { startBrowser(source, url, title, true) } - var waitUserInput: Boolean = false + var waitUserInput = false while(CacheManager.get(key) == null) { if (!waitUserInput) { AppLog.putDebug("等待返回验证结果...") diff --git a/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt b/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt index 1ed16c894..c90e25179 100644 --- a/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt +++ b/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt @@ -18,6 +18,7 @@ import org.apache.commons.text.StringEscapeUtils import splitties.init.appCtx import java.lang.ref.WeakReference import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException /** * 后台webView @@ -50,14 +51,14 @@ class BackstageWebView( override fun onError(error: Throwable) { if (!block.isCompleted) - block.cancel(error) + block.resumeWithException(error) } } runOnUI { try { load() } catch (error: Throwable) { - block.cancel(error) + block.resumeWithException(error) } } } diff --git a/app/src/main/java/io/legado/app/help/http/CookieStore.kt b/app/src/main/java/io/legado/app/help/http/CookieStore.kt index ace5ac5ca..625f4d1d3 100644 --- a/app/src/main/java/io/legado/app/help/http/CookieStore.kt +++ b/app/src/main/java/io/legado/app/help/http/CookieStore.kt @@ -5,8 +5,8 @@ package io.legado.app.help.http import android.text.TextUtils import io.legado.app.data.appDb import io.legado.app.data.entities.Cookie -import io.legado.app.help.http.api.CookieManager import io.legado.app.help.CacheManager +import io.legado.app.help.http.api.CookieManager import io.legado.app.utils.NetworkUtils object CookieStore : CookieManager { @@ -44,7 +44,7 @@ object CookieStore : CookieManager { CacheManager.getFromMemory("${domain}_cookie")?.let { return it } val cookieBean = appDb.cookieDao.get(domain) val cookie = cookieBean?.cookie ?: "" - CacheManager.putMemory(url, cookie ?: "") + CacheManager.putMemory(url, cookie) return cookie } @@ -56,8 +56,9 @@ object CookieStore : CookieManager { override fun removeCookie(url: String) { val domain = NetworkUtils.getSubDomain(url) - CacheManager.deleteMemory("${domain}_cookie") appDb.cookieDao.delete(domain) + CacheManager.deleteMemory("${domain}_cookie") + android.webkit.CookieManager.getInstance().removeAllCookies(null) } override fun cookieToMap(cookie: String): MutableMap { diff --git a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt index c5cb6ea79..e6e1a672f 100644 --- a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt +++ b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt @@ -1,9 +1,11 @@ package io.legado.app.help.http import io.legado.app.constant.AppConst +import io.legado.app.help.CacheManager import io.legado.app.help.config.AppConfig import io.legado.app.help.http.cronet.CronetInterceptor import io.legado.app.help.http.cronet.CronetLoader +import io.legado.app.utils.NetworkUtils import okhttp3.* import java.net.InetSocketAddress import java.net.Proxy @@ -23,7 +25,10 @@ val cookieJar by lazy { override fun saveFromResponse(url: HttpUrl, cookies: List) { cookies.forEach { - CookieStore.replaceCookie(url.toString(), "${it.name}=${it.value}") + //CookieStore.replaceCookie(url.toString(), "${it.name}=${it.value}") + //临时保存 书源启用cookie选项再添加到数据库 + val domain = NetworkUtils.getSubDomain(url.toString()) + CacheManager.putMemory("${domain}_cookieJar", "${it.name}=${it.value}") } } diff --git a/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt b/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt index e219ee59c..d8b38d316 100644 --- a/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt +++ b/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt @@ -194,15 +194,28 @@ object AppWebDav { Coroutine.async { val bookProgress = BookProgress(book) val json = GSON.toJson(bookProgress) - val url = getProgressUrl(book) + val url = getProgressUrl(book.name, book.author) WebDav(url, authorization).upload(json.toByteArray(), "application/json") }.onError { AppLog.put("上传进度失败\n${it.localizedMessage}") } } - private fun getProgressUrl(book: Book): String { - return bookProgressUrl + book.name + "_" + book.author + ".json" + fun uploadBookProgress(bookProgress: BookProgress) { + val authorization = authorization ?: return + if (!syncBookProgress) return + if (!NetworkUtils.isAvailable()) return + Coroutine.async { + val json = GSON.toJson(bookProgress) + val url = getProgressUrl(bookProgress.name, bookProgress.author) + WebDav(url, authorization).upload(json.toByteArray(), "application/json") + }.onError { + AppLog.put("上传进度失败\n${it.localizedMessage}") + } + } + + private fun getProgressUrl(name: String, author: String): String { + return bookProgressUrl + name + "_" + author + ".json" } /** @@ -210,7 +223,7 @@ object AppWebDav { */ suspend fun getBookProgress(book: Book): BookProgress? { authorization?.let { - val url = getProgressUrl(book) + val url = getProgressUrl(book.name, book.author) kotlin.runCatching { WebDav(url, it).download().let { byteArray -> val json = String(byteArray) diff --git a/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt b/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt index 1a10c0280..6d4eda465 100644 --- a/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt +++ b/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt @@ -98,9 +98,12 @@ object ImportOldData { } private fun importOldReplaceRule(json: String): Int { - val rules = ReplaceAnalyzer.jsonToReplaceRules(json) - appDb.replaceRuleDao.insert(*rules.toTypedArray()) - return rules.size + val rules = ReplaceAnalyzer.jsonToReplaceRules(json).getOrNull() + rules?.let { + appDb.replaceRuleDao.insert(*rules.toTypedArray()) + return rules.size + } + return 0 } private fun fromOldBooks(json: String): List { diff --git a/app/src/main/java/io/legado/app/help/storage/Restore.kt b/app/src/main/java/io/legado/app/help/storage/Restore.kt index 10f874cd6..b2442d3f9 100644 --- a/app/src/main/java/io/legado/app/help/storage/Restore.kt +++ b/app/src/main/java/io/legado/app/help/storage/Restore.kt @@ -22,40 +22,36 @@ import kotlinx.coroutines.withContext import splitties.init.appCtx import java.io.File import java.io.FileInputStream +import java.io.FileOutputStream object Restore { suspend fun restore(context: Context, path: String) { - withContext(IO) { + kotlin.runCatching { if (path.isContentScheme()) { DocumentFile.fromTreeUri(context, Uri.parse(path))?.listFiles()?.forEach { doc -> - for (fileName in Backup.backupFileNames) { - if (doc.name == fileName) { - DocumentUtils.readText(context, doc.uri).let { - FileUtils.createFileIfNotExist("${Backup.backupPath}${File.separator}$fileName") - .writeText(it) + if (Backup.backupFileNames.contains(doc.name)) { + context.contentResolver.openInputStream(doc.uri)?.use { inputStream -> + val file = File("${Backup.backupPath}${File.separator}${doc.name}") + FileOutputStream(file).use { outputStream -> + inputStream.copyTo(outputStream) } } } } } else { - try { - val file = File(path) - for (fileName in Backup.backupFileNames) { - file.getFile(fileName).let { - if (it.exists()) { - it.copyTo( - FileUtils.createFileIfNotExist("${Backup.backupPath}${File.separator}$fileName"), - true - ) - } - } + val dir = File(path) + for (fileName in Backup.backupFileNames) { + val file = dir.getFile(fileName) + if (file.exists()) { + val target = File("${Backup.backupPath}${File.separator}$fileName") + file.copyTo(target, true) } - } catch (e: Exception) { - e.printOnDebug() } } + }.onFailure { + AppLog.put("恢复复制文件出错\n${it.localizedMessage}", it) } restoreDatabase() restoreConfig() @@ -129,7 +125,7 @@ object Restore { ThemeConfig.upConfig() } } catch (e: Exception) { - e.printOnDebug() + AppLog.put("恢复主题出错\n${e.localizedMessage}", e) } if (!BackupConfig.ignoreReadConfig) { //恢复阅读界面配置 @@ -142,7 +138,7 @@ object Restore { ReadBookConfig.initConfigs() } } catch (e: Exception) { - e.printOnDebug() + AppLog.put("恢复阅读界面出错\n${e.localizedMessage}", e) } try { val file = @@ -153,7 +149,7 @@ object Restore { ReadBookConfig.initShareConfig() } } catch (e: Exception) { - e.printOnDebug() + AppLog.put("恢复阅读界面出错\n${e.localizedMessage}", e) } } Preferences.getSharedPreferences(appCtx, path, "config")?.all?.let { map -> diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/ColorPreference.kt b/app/src/main/java/io/legado/app/lib/prefs/ColorPreference.kt similarity index 99% rename from app/src/main/java/io/legado/app/ui/widget/prefs/ColorPreference.kt rename to app/src/main/java/io/legado/app/lib/prefs/ColorPreference.kt index 806cb9ac9..3ea1181a1 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/ColorPreference.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/ColorPreference.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.content.Context import android.content.ContextWrapper @@ -118,7 +118,7 @@ class ColorPreference(context: Context, attrs: AttributeSet) : Preference(contex } override fun onBindViewHolder(holder: PreferenceViewHolder) { - val v = io.legado.app.ui.widget.prefs.Preference.bindView( + val v = io.legado.app.lib.prefs.Preference.bindView( context, holder, icon, title, summary, widgetLayoutResource, io.legado.app.R.id.cpv_preference_preview_color_panel, 30, 30 ) diff --git a/app/src/main/java/io/legado/app/lib/prefs/EditTextPreference.kt b/app/src/main/java/io/legado/app/lib/prefs/EditTextPreference.kt new file mode 100644 index 000000000..defe645a8 --- /dev/null +++ b/app/src/main/java/io/legado/app/lib/prefs/EditTextPreference.kt @@ -0,0 +1,36 @@ +package io.legado.app.lib.prefs + +import android.content.Context +import android.util.AttributeSet +import android.widget.TextView +import androidx.preference.EditTextPreference.OnBindEditTextListener +import androidx.preference.PreferenceViewHolder +import io.legado.app.R +import io.legado.app.lib.theme.accentColor +import io.legado.app.utils.applyTint + +class EditTextPreference(context: Context, attrs: AttributeSet) : + androidx.preference.EditTextPreference(context, attrs) { + + private var mOnBindEditTextListener: OnBindEditTextListener? = null + private val onBindEditTextListener = OnBindEditTextListener { editText -> + editText.applyTint(context.accentColor) + mOnBindEditTextListener?.onBindEditText(editText) + } + + init { + // isPersistent = true + layoutResource = R.layout.view_preference + super.setOnBindEditTextListener(onBindEditTextListener) + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + Preference.bindView(context, holder, icon, title, summary, null, null) + super.onBindViewHolder(holder) + } + + override fun setOnBindEditTextListener(onBindEditTextListener: OnBindEditTextListener?) { + mOnBindEditTextListener = onBindEditTextListener + } + +} diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/EditTextPreferenceDialog.kt b/app/src/main/java/io/legado/app/lib/prefs/EditTextPreferenceDialog.kt similarity index 64% rename from app/src/main/java/io/legado/app/ui/widget/prefs/EditTextPreferenceDialog.kt rename to app/src/main/java/io/legado/app/lib/prefs/EditTextPreferenceDialog.kt index 06a6bb960..70066e770 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/EditTextPreferenceDialog.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/EditTextPreferenceDialog.kt @@ -1,9 +1,11 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.app.Dialog import android.os.Bundle +import androidx.appcompat.app.AlertDialog import androidx.preference.EditTextPreferenceDialogFragmentCompat import androidx.preference.PreferenceDialogFragmentCompat +import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.filletBackground class EditTextPreferenceDialog : EditTextPreferenceDialogFragmentCompat() { @@ -23,6 +25,13 @@ class EditTextPreferenceDialog : EditTextPreferenceDialogFragmentCompat() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val dialog = super.onCreateDialog(savedInstanceState) dialog.window?.setBackgroundDrawable(requireContext().filletBackground) + dialog.window?.decorView?.post { + (dialog as AlertDialog).run { + getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor) + getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor) + getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor) + } + } return dialog } diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/IconListPreference.kt b/app/src/main/java/io/legado/app/lib/prefs/IconListPreference.kt similarity index 99% rename from app/src/main/java/io/legado/app/ui/widget/prefs/IconListPreference.kt rename to app/src/main/java/io/legado/app/lib/prefs/IconListPreference.kt index de1718472..046d6d7d6 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/IconListPreference.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/IconListPreference.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.content.Context import android.content.ContextWrapper diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/ListPreferenceDialog.kt b/app/src/main/java/io/legado/app/lib/prefs/ListPreferenceDialog.kt similarity index 64% rename from app/src/main/java/io/legado/app/ui/widget/prefs/ListPreferenceDialog.kt rename to app/src/main/java/io/legado/app/lib/prefs/ListPreferenceDialog.kt index 3c324601e..7165ef744 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/ListPreferenceDialog.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/ListPreferenceDialog.kt @@ -1,9 +1,11 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.app.Dialog import android.os.Bundle +import androidx.appcompat.app.AlertDialog import androidx.preference.ListPreferenceDialogFragmentCompat import androidx.preference.PreferenceDialogFragmentCompat +import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.filletBackground class ListPreferenceDialog : ListPreferenceDialogFragmentCompat() { @@ -23,6 +25,13 @@ class ListPreferenceDialog : ListPreferenceDialogFragmentCompat() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val dialog = super.onCreateDialog(savedInstanceState) dialog.window?.setBackgroundDrawable(requireContext().filletBackground) + dialog.window?.decorView?.post { + (dialog as AlertDialog).run { + getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor) + getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor) + getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor) + } + } return dialog } diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/MultiSelectListPreferenceDialog.kt b/app/src/main/java/io/legado/app/lib/prefs/MultiSelectListPreferenceDialog.kt similarity index 66% rename from app/src/main/java/io/legado/app/ui/widget/prefs/MultiSelectListPreferenceDialog.kt rename to app/src/main/java/io/legado/app/lib/prefs/MultiSelectListPreferenceDialog.kt index 62c057f74..c1ab77708 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/MultiSelectListPreferenceDialog.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/MultiSelectListPreferenceDialog.kt @@ -1,9 +1,11 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.app.Dialog import android.os.Bundle +import androidx.appcompat.app.AlertDialog import androidx.preference.MultiSelectListPreferenceDialogFragmentCompat import androidx.preference.PreferenceDialogFragmentCompat +import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.filletBackground class MultiSelectListPreferenceDialog : MultiSelectListPreferenceDialogFragmentCompat() { @@ -25,6 +27,13 @@ class MultiSelectListPreferenceDialog : MultiSelectListPreferenceDialogFragmentC override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val dialog = super.onCreateDialog(savedInstanceState) dialog.window?.setBackgroundDrawable(requireContext().filletBackground) + dialog.window?.decorView?.post { + (dialog as AlertDialog).run { + getButton(AlertDialog.BUTTON_NEGATIVE)?.setTextColor(accentColor) + getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(accentColor) + getButton(AlertDialog.BUTTON_NEUTRAL)?.setTextColor(accentColor) + } + } return dialog } diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/NameListPreference.kt b/app/src/main/java/io/legado/app/lib/prefs/NameListPreference.kt similarity index 83% rename from app/src/main/java/io/legado/app/ui/widget/prefs/NameListPreference.kt rename to app/src/main/java/io/legado/app/lib/prefs/NameListPreference.kt index cf06ec6f8..ca1abe128 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/NameListPreference.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/NameListPreference.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.content.Context import android.util.AttributeSet @@ -25,14 +25,8 @@ class NameListPreference(context: Context, attrs: AttributeSet) : ListPreference override fun onBindViewHolder(holder: PreferenceViewHolder) { val v = Preference.bindView( - context, - holder, - icon, - title, - summary, - widgetLayoutResource, - R.id.text_view, - isBottomBackground = isBottomBackground + context, holder, icon, title, summary, widgetLayoutResource, + R.id.text_view, isBottomBackground = isBottomBackground ) if (v is TextView) { v.text = entry diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/Preference.kt b/app/src/main/java/io/legado/app/lib/prefs/Preference.kt similarity index 99% rename from app/src/main/java/io/legado/app/ui/widget/prefs/Preference.kt rename to app/src/main/java/io/legado/app/lib/prefs/Preference.kt index 6cd98ce18..6ed4c9cfc 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/Preference.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/Preference.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.content.Context import android.graphics.drawable.Drawable diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/PreferenceCategory.kt b/app/src/main/java/io/legado/app/lib/prefs/PreferenceCategory.kt similarity index 98% rename from app/src/main/java/io/legado/app/ui/widget/prefs/PreferenceCategory.kt rename to app/src/main/java/io/legado/app/lib/prefs/PreferenceCategory.kt index 74ff487df..725fab609 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/PreferenceCategory.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/PreferenceCategory.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.content.Context import android.util.AttributeSet diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/SwitchPreference.kt b/app/src/main/java/io/legado/app/lib/prefs/SwitchPreference.kt similarity index 97% rename from app/src/main/java/io/legado/app/ui/widget/prefs/SwitchPreference.kt rename to app/src/main/java/io/legado/app/lib/prefs/SwitchPreference.kt index 3c4e29aa9..d71e914b7 100644 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/SwitchPreference.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/SwitchPreference.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.prefs +package io.legado.app.lib.prefs import android.content.Context import android.util.AttributeSet diff --git a/app/src/main/java/io/legado/app/base/BasePreferenceFragment.kt b/app/src/main/java/io/legado/app/lib/prefs/fragment/PreferenceFragment.kt similarity index 80% rename from app/src/main/java/io/legado/app/base/BasePreferenceFragment.kt rename to app/src/main/java/io/legado/app/lib/prefs/fragment/PreferenceFragment.kt index f444985e3..b18dbdece 100644 --- a/app/src/main/java/io/legado/app/base/BasePreferenceFragment.kt +++ b/app/src/main/java/io/legado/app/lib/prefs/fragment/PreferenceFragment.kt @@ -1,13 +1,13 @@ -package io.legado.app.base +package io.legado.app.lib.prefs.fragment import android.annotation.SuppressLint import androidx.fragment.app.DialogFragment import androidx.preference.* -import io.legado.app.ui.widget.prefs.EditTextPreferenceDialog -import io.legado.app.ui.widget.prefs.ListPreferenceDialog -import io.legado.app.ui.widget.prefs.MultiSelectListPreferenceDialog +import io.legado.app.lib.prefs.EditTextPreferenceDialog +import io.legado.app.lib.prefs.ListPreferenceDialog +import io.legado.app.lib.prefs.MultiSelectListPreferenceDialog -abstract class BasePreferenceFragment : PreferenceFragmentCompat() { +abstract class PreferenceFragment : PreferenceFragmentCompat() { private val dialogFragmentTag = "androidx.preference.PreferenceFragment.DIALOG" @@ -34,7 +34,7 @@ abstract class BasePreferenceFragment : PreferenceFragmentCompat() { return } - val f: DialogFragment = when (preference) { + val dialogFragment: DialogFragment = when (preference) { is EditTextPreference -> { EditTextPreferenceDialog.newInstance(preference.getKey()) } @@ -54,10 +54,9 @@ abstract class BasePreferenceFragment : PreferenceFragmentCompat() { } } @Suppress("DEPRECATION") - f.setTargetFragment(this, 0) + dialogFragment.setTargetFragment(this, 0) - f.show(parentFragmentManager, dialogFragmentTag) + dialogFragment.show(parentFragmentManager, dialogFragmentTag) } - } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/BookCover.kt b/app/src/main/java/io/legado/app/model/BookCover.kt index 75fba23de..c91d6cc0b 100644 --- a/app/src/main/java/io/legado/app/model/BookCover.kt +++ b/app/src/main/java/io/legado/app/model/BookCover.kt @@ -150,6 +150,7 @@ object BookCover { override var loginUrl: String? = null, override var loginUi: String? = null, override var header: String? = null, + override var enabledCookieJar: Boolean? = false, ) : BaseSource { override fun getTag(): String { diff --git a/app/src/main/java/io/legado/app/model/CacheBook.kt b/app/src/main/java/io/legado/app/model/CacheBook.kt index 92f61b1a5..79394d5c4 100644 --- a/app/src/main/java/io/legado/app/model/CacheBook.kt +++ b/app/src/main/java/io/legado/app/model/CacheBook.kt @@ -131,9 +131,9 @@ object CacheBook { class CacheBookModel(var bookSource: BookSource, var book: Book) { - private val waitDownloadSet = hashSetOf() - private val onDownloadSet = hashSetOf() - private val successDownloadSet = hashSetOf() + private val waitDownloadSet = linkedSetOf() + private val onDownloadSet = linkedSetOf() + private val successDownloadSet = linkedSetOf() private val errorDownloadMap = hashMapOf() val waitCount get() = waitDownloadSet.size @@ -174,7 +174,7 @@ object CacheBook { } onDownloadSet.remove(index) //重试3次 - if (errorDownloadMap[index] ?: 0 < 3) { + if ((errorDownloadMap[index] ?: 0) < 3) { waitDownloadSet.add(index) } else { AppLog.put( diff --git a/app/src/main/java/io/legado/app/model/Debug.kt b/app/src/main/java/io/legado/app/model/Debug.kt index 9be322adc..8cab89c29 100644 --- a/app/src/main/java/io/legado/app/model/Debug.kt +++ b/app/src/main/java/io/legado/app/model/Debug.kt @@ -2,6 +2,7 @@ package io.legado.app.model import android.annotation.SuppressLint import io.legado.app.constant.AppPattern +import io.legado.app.constant.BookType import io.legado.app.data.entities.* import io.legado.app.help.coroutine.CompositeCoroutine import io.legado.app.model.rss.Rss @@ -238,7 +239,11 @@ object Debug { .onSuccess { log(debugSource, "︽详情页解析完成") log(debugSource, showTime = false) - tocDebug(scope, bookSource, book) + if (book.type != BookType.file) { + tocDebug(scope, bookSource, book) + } else { + log(debugSource, "≡文件类书源跳过解析目录", state = 1000) + } } .onError { log(debugSource, it.msg, state = -1) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 2802921d5..d24e56de4 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -69,6 +69,7 @@ class AnalyzeUrl( private var retry: Int = 0 private var useWebView: Boolean = false private var webJs: String? = null + private val enabledCookieJar = source?.enabledCookieJar ?: false init { if (!mUrl.isDataUrl()) { @@ -519,17 +520,26 @@ class AnalyzeUrl( } /** - *设置cookie urlOption的优先级大于书源保存的cookie + *设置cookie 优先级 + * urlOption临时cookie > 数据库cookie = okhttp CookieJar保存在内存中的cookie *@param tag 书源url 缺省为传入的url */ private fun setCookie(tag: String?) { - val cookie = CookieStore.getCookie(tag ?: url) + val domain = NetworkUtils.getSubDomain(tag ?: url) + //书源启用保存cookie时 添加内存中的cookie到数据库 + if (enabledCookieJar) { + val key = "${domain}_cookieJar" + CacheManager.getFromMemory(key)?.let { + CookieStore.replaceCookie(domain, it) + CacheManager.deleteMemory(key) + } + } + val cookie = CookieStore.getCookie(domain) if (cookie.isNotEmpty()) { val cookieMap = CookieStore.cookieToMap(cookie) val customCookieMap = CookieStore.cookieToMap(headerMap["Cookie"] ?: "") cookieMap.putAll(customCookieMap) - val newCookie = CookieStore.mapToCookie(cookieMap) - newCookie?.let { + CookieStore.mapToCookie(cookieMap)?.let { headerMap.put("Cookie", it) } } diff --git a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt index 2b96dcfce..a59b2db5d 100644 --- a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt +++ b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt @@ -1,24 +1,29 @@ package io.legado.app.model.localBook import android.net.Uri +import android.util.Base64 import androidx.documentfile.provider.DocumentFile import com.script.SimpleBindings import io.legado.app.R import io.legado.app.constant.AppConst import io.legado.app.data.appDb +import io.legado.app.data.entities.BaseSource import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter +import io.legado.app.exception.NoStackTraceException import io.legado.app.exception.TocEmptyException import io.legado.app.help.BookHelp import io.legado.app.help.config.AppConfig +import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.* import splitties.init.appCtx -import java.io.File -import java.io.FileInputStream -import java.io.FileNotFoundException -import java.io.InputStream +import java.io.* import java.util.regex.Pattern +/** + * 书籍文件导入 目录正文解析 + * 支持在线文件(txt epub umd 压缩文件需要用户解压) 本地文件 + */ object LocalBook { private val nameAuthorPatterns = arrayOf( @@ -41,6 +46,20 @@ object LocalBook { throw FileNotFoundException("${uri.path} 文件不存在") } + fun getLastModified(book: Book): Result { + return kotlin.runCatching { + val uri = Uri.parse(book.bookUrl) + if (uri.isContentScheme()) { + return@runCatching DocumentFile.fromSingleUri(appCtx, uri)!!.lastModified() + } + val file = File(uri.path!!) + if (file.exists()) { + return@runCatching File(uri.path!!).lastModified() + } + throw FileNotFoundException("${uri.path} 文件不存在") + } + } + @Throws(Exception::class) fun getChapterList(book: Book): ArrayList { val chapters = when { @@ -79,6 +98,23 @@ object LocalBook { } } + /** + * 下载在线的文件并自动导入到阅读(txt umd epub) + * 压缩文件请先提示用户解压 + */ + fun importFileOnLine( + str: String, + fileName: String, + source: BaseSource? = null, + ): Book { + return saveBookFile(str, fileName, source).let { + importFile(it) + } + } + + /** + * 导入本地文件 + */ fun importFile(uri: Uri): Book { val bookUrl: String val updateTime: Long @@ -119,7 +155,10 @@ object LocalBook { return book } - fun analyzeNameAuthor(fileName: String): Pair { + /** + * 从文件分析书籍必要信息(书名 作者等) + */ + private fun analyzeNameAuthor(fileName: String): Pair { val tempFileName = fileName.substringBeforeLast(".") var name: String var author: String @@ -171,4 +210,75 @@ object LocalBook { } } } + + /** + * 下载在线的文件 + */ + fun saveBookFile( + str: String, + fileName: String, + source: BaseSource? = null, + ): Uri { + val bytes = when { + str.isAbsUrl() -> AnalyzeUrl(str, source = source).getByteArray() + str.isDataUrl() -> Base64.decode(str.substringAfter("base64,"), Base64.DEFAULT) + else -> throw NoStackTraceException("在线导入书籍支持http/https/DataURL") + } + return saveBookFile(bytes, fileName) + } + + /** + * 分析下载文件类书源的下载链接的文件后缀 + * https://www.example.com/download/{fileName}.{type} 含有文件名和后缀 + * https://www.example.com/download/?fileid=1234, {type: "txt"} 规则设置 + */ + fun parseFileSuffix(url: String): String { + val analyzeUrl = AnalyzeUrl(url) + val urlNoOption = analyzeUrl.url + val lastPath = urlNoOption.substringAfterLast("/") + val fileType = lastPath.substringAfterLast(".") + val type = analyzeUrl.type + return type ?: fileType + } + + private fun saveBookFile( + bytes: ByteArray, + fileName: String + ): Uri { + val defaultBookTreeUri = AppConfig.defaultBookTreeUri + if (defaultBookTreeUri.isNullOrBlank()) throw NoStackTraceException("没有设置书籍保存位置!") + val treeUri = Uri.parse(defaultBookTreeUri) + return if (treeUri.isContentScheme()) { + val treeDoc = DocumentFile.fromTreeUri(appCtx, treeUri) + var doc = treeDoc!!.findFile(fileName) + if (doc == null) { + doc = treeDoc.createFile(FileUtils.getMimeType(fileName), fileName) + ?: throw SecurityException("Permission Denial") + } + appCtx.contentResolver.openOutputStream(doc.uri)!!.use { oStream -> + oStream.write(bytes) + } + doc.uri + } else { + val treeFile = File(treeUri.path!!) + val file = treeFile.getFile(fileName) + FileOutputStream(file).use { oStream -> + oStream.write(bytes) + } + Uri.fromFile(file) + } + } + + //文件类书源 合并在线书籍信息 在线 > 本地 + fun mergeBook(localBook: Book, onLineBook: Book?): Book { + onLineBook ?: return localBook + localBook.name = onLineBook.name.ifBlank { localBook.name } + localBook.author = onLineBook.author.ifBlank { localBook.author } + localBook.coverUrl = onLineBook.coverUrl + localBook.intro = + if (onLineBook.intro.isNullOrBlank()) localBook.intro else onLineBook.intro + localBook.save() + return localBook + } + } diff --git a/app/src/main/java/io/legado/app/model/localBook/README.md b/app/src/main/java/io/legado/app/model/localBook/README.md index 8f080b25e..04aaa6c38 100644 --- a/app/src/main/java/io/legado/app/model/localBook/README.md +++ b/app/src/main/java/io/legado/app/model/localBook/README.md @@ -1,7 +1,7 @@ -# 本地书籍解析 +# 书籍文件导入解析 * BaseLocalBookParse.kt 本地书籍解析接口 -* LocalBook.kt 总入口 +* LocalBook.kt 导入解析总入口 * TextFile.kt 解析txt * EpubFile.kt 解析epub * UmdFile.kt 解析umd \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt index 1ff5f0356..9595b1079 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt @@ -1,6 +1,8 @@ package io.legado.app.model.webBook +import android.text.TextUtils import io.legado.app.R +import io.legado.app.constant.BookType import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookSource import io.legado.app.exception.NoStackTraceException @@ -137,14 +139,29 @@ object BookInfo { Debug.log(bookSource.bookSourceUrl, "└${e.localizedMessage}") DebugLog.e("获取封面出错", e) } - scope.ensureActive() - Debug.log(bookSource.bookSourceUrl, "┌获取目录链接") - book.tocUrl = analyzeRule.getString(infoRule.tocUrl, isUrl = true) - if (book.tocUrl.isEmpty()) book.tocUrl = baseUrl - if (book.tocUrl == baseUrl) { - book.tocHtml = body + if (book.type != BookType.file) { + scope.ensureActive() + Debug.log(bookSource.bookSourceUrl, "┌获取目录链接") + book.tocUrl = analyzeRule.getString(infoRule.tocUrl, isUrl = true) + if (book.tocUrl.isEmpty()) book.tocUrl = baseUrl + if (book.tocUrl == baseUrl) { + book.tocHtml = body + } + Debug.log(bookSource.bookSourceUrl, "└${book.tocUrl}") + } else { + scope.ensureActive() + Debug.log(bookSource.bookSourceUrl, "┌获取文件下载链接") + book.downloadUrls = analyzeRule.getStringList(infoRule.downloadUrls, isUrl = true) + if (book.downloadUrls == null) { + Debug.log(bookSource.bookSourceUrl, "└") + throw NoStackTraceException("下载链接为空") + } else { + Debug.log( + bookSource.bookSourceUrl, + "└" + TextUtils.join(",\n", book.downloadUrls!!) + ) + } } - Debug.log(bookSource.bookSourceUrl, "└${book.tocUrl}") } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/service/CheckSourceService.kt b/app/src/main/java/io/legado/app/service/CheckSourceService.kt index a7a81b924..62637d428 100644 --- a/app/src/main/java/io/legado/app/service/CheckSourceService.kt +++ b/app/src/main/java/io/legado/app/service/CheckSourceService.kt @@ -6,6 +6,7 @@ import com.script.ScriptException import io.legado.app.R import io.legado.app.base.BaseService import io.legado.app.constant.AppConst +import io.legado.app.constant.BookType import io.legado.app.constant.EventBus import io.legado.app.constant.IntentAction import io.legado.app.data.appDb @@ -208,7 +209,9 @@ class CheckSourceService : BaseService() { mBook = WebBook.getBookInfoAwait(this, source, mBook) } //校验目录 - if (CheckSource.checkCategory) { + if (CheckSource.checkCategory && + source.bookSourceType != BookType.file + ) { val toc = WebBook.getChapterListAwait(this, source, mBook).getOrThrow() val nextChapterUrl = toc.getOrNull(1)?.url ?: toc.first().url //校验正文 diff --git a/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt b/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt index b49c2ee82..def97fbbc 100644 --- a/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt @@ -38,7 +38,7 @@ class HttpReadAloudService : BaseReadAloudService(), private val ttsFolderPath: String by lazy { cacheDir.absolutePath + File.separator + "httpTTS" + File.separator } - private var speechRate: Int = AppConfig.speechRatePlay + private var speechRate: Int = AppConfig.speechRatePlay + 5 private var downloadTask: Coroutine<*>? = null private var playIndexJob: Job? = null private var downloadTaskIsActive = false @@ -301,7 +301,7 @@ class HttpReadAloudService : BaseReadAloudService(), override fun upSpeechRate(reset: Boolean) { downloadTask?.cancel() exoPlayer.stop() - speechRate = AppConfig.speechRatePlay + speechRate = AppConfig.speechRatePlay + 5 downloadAudio() } diff --git a/app/src/main/java/io/legado/app/ui/association/BaseAssociationViewModel.kt b/app/src/main/java/io/legado/app/ui/association/BaseAssociationViewModel.kt index 50548f15a..e2a4cfdf9 100644 --- a/app/src/main/java/io/legado/app/ui/association/BaseAssociationViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/BaseAssociationViewModel.kt @@ -2,16 +2,7 @@ package io.legado.app.ui.association import android.app.Application import androidx.lifecycle.MutableLiveData -import io.legado.app.R import io.legado.app.base.BaseViewModel -import io.legado.app.data.appDb -import io.legado.app.data.entities.TxtTocRule -import io.legado.app.exception.NoStackTraceException -import io.legado.app.help.config.ThemeConfig -import io.legado.app.utils.GSON -import io.legado.app.utils.fromJsonArray -import io.legado.app.utils.fromJsonObject -import io.legado.app.utils.isJsonArray abstract class BaseAssociationViewModel(application: Application) : BaseViewModel(application) { @@ -37,47 +28,4 @@ abstract class BaseAssociationViewModel(application: Application) : BaseViewMode } } - fun importTextTocRule(json: String, finally: (title: String, msg: String) -> Unit) { - execute { - if (json.isJsonArray()) { - GSON.fromJsonArray(json).getOrThrow()?.let { - appDb.txtTocRuleDao.insert(*it.toTypedArray()) - } ?: throw NoStackTraceException("格式不对") - } else { - GSON.fromJsonObject(json).getOrThrow()?.let { - appDb.txtTocRuleDao.insert(it) - } ?: throw NoStackTraceException("格式不对") - } - }.onSuccess { - finally.invoke(context.getString(R.string.success), "导入Txt规则成功") - }.onError { - finally.invoke( - context.getString(R.string.error), - it.localizedMessage ?: context.getString(R.string.unknown_error) - ) - } - } - - fun importTheme(json: String, finally: (title: String, msg: String) -> Unit) { - execute { - if (json.isJsonArray()) { - GSON.fromJsonArray(json).getOrThrow()?.forEach { - ThemeConfig.addConfig(it) - } - } else { - GSON.fromJsonObject(json).getOrThrow()?.let { - ThemeConfig.addConfig(it) - } - } - }.onSuccess { - finally.invoke(context.getString(R.string.success), "导入主题成功") - }.onError { - finally.invoke( - context.getString(R.string.error), - it.localizedMessage ?: context.getString(R.string.unknown_error) - ) - } - } - - } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt index d4628cf0d..52bdd597c 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt @@ -61,21 +61,7 @@ class ImportHttpTtsViewModel(app: Application) : BaseViewModel(app) { fun importSource(text: String) { execute { - val mText = text.trim() - when { - mText.isJsonObject() -> { - HttpTTS.fromJson(mText).getOrThrow().let { - allSources.add(it) - } - } - mText.isJsonArray() -> HttpTTS.fromJsonArray(mText).getOrThrow().let { items -> - allSources.addAll(items) - } - mText.isAbsUrl() -> { - importSourceUrl(mText) - } - else -> throw NoStackTraceException(context.getString(R.string.wrong_format)) - } + importSourceAwait(text.trim()) }.onError { it.printOnDebug() errorLiveData.postValue(it.localizedMessage ?: "") @@ -84,11 +70,28 @@ class ImportHttpTtsViewModel(app: Application) : BaseViewModel(app) { } } + private suspend fun importSourceAwait(text: String) { + when { + text.isJsonObject() -> { + HttpTTS.fromJson(text).getOrThrow().let { + allSources.add(it) + } + } + text.isJsonArray() -> HttpTTS.fromJsonArray(text).getOrThrow().let { items -> + allSources.addAll(items) + } + text.isAbsUrl() -> { + importSourceUrl(text) + } + else -> throw NoStackTraceException(context.getString(R.string.wrong_format)) + } + } + private suspend fun importSourceUrl(url: String) { okHttpClient.newCallResponseBody { url(url) }.text().let { - allSources.addAll(HttpTTS.fromJsonArray(it).getOrThrow()) + importSourceAwait(it) } } diff --git a/app/src/main/java/io/legado/app/ui/association/ImportOnLineBookFileDialog.kt b/app/src/main/java/io/legado/app/ui/association/ImportOnLineBookFileDialog.kt new file mode 100644 index 000000000..667be6b10 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/association/ImportOnLineBookFileDialog.kt @@ -0,0 +1,132 @@ +package io.legado.app.ui.association + +import android.content.Context +import android.content.DialogInterface +import android.os.Bundle +import android.view.View +import android.view.ViewGroup +import android.net.Uri +import androidx.fragment.app.viewModels +import androidx.recyclerview.widget.LinearLayoutManager +import io.legado.app.R +import io.legado.app.base.BaseDialogFragment +import io.legado.app.base.adapter.ItemViewHolder +import io.legado.app.base.adapter.RecyclerAdapter +import io.legado.app.databinding.DialogRecyclerViewBinding +import io.legado.app.databinding.ItemBookFileImportBinding +import io.legado.app.help.config.AppConfig +import io.legado.app.lib.dialogs.alert +import io.legado.app.lib.theme.primaryColor +import io.legado.app.ui.widget.dialog.WaitDialog +import io.legado.app.utils.* +import io.legado.app.utils.viewbindingdelegate.viewBinding + + +/** + * 导入在线书籍文件弹出窗口 + */ +class ImportOnLineBookFileDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) { + + + private val binding by viewBinding(DialogRecyclerViewBinding::bind) + private val viewModel by viewModels() + private val adapter by lazy { BookFileAdapter(requireContext()) } + + override fun onStart() { + super.onStart() + setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + } + + override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { + val bookUrl = arguments?.getString("bookUrl") + viewModel.initData(bookUrl) + binding.toolBar.setBackgroundColor(primaryColor) + binding.toolBar.setTitle(R.string.download_and_import_file) + binding.rotateLoading.show() + binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) + binding.recyclerView.adapter = adapter + viewModel.errorLiveData.observe(this) { + binding.rotateLoading.hide() + binding.tvMsg.apply { + text = it + visible() + } + } + viewModel.successLiveData.observe(this) { + binding.rotateLoading.hide() + if (it > 0) { + adapter.setItems(viewModel.allBookFiles) + } + } + viewModel.savedFileUriData.observe(this) { + requireContext().openFileUri(it, "*/*") + } + } + + private fun importFileAndUpdate(url: String, fileName: String) { + val waitDialog = WaitDialog(requireContext()) + waitDialog.show() + viewModel.importOnLineBookFile(url, fileName) { + waitDialog.dismiss() + dismissAllowingStateLoss() + } + } + + private fun downloadFile(url: String, fileName: String) { + val waitDialog = WaitDialog(requireContext()) + waitDialog.show() + viewModel.downloadUrl(url, fileName) { + waitDialog.dismiss() + dismissAllowingStateLoss() + } +} + + inner class BookFileAdapter(context: Context) : + RecyclerAdapter +, ItemBookFileImportBinding>(context) { + + override fun getViewBinding(parent: ViewGroup): ItemBookFileImportBinding { + return ItemBookFileImportBinding.inflate(inflater, parent, false) + } + + override fun convert( + holder: ItemViewHolder, + binding: ItemBookFileImportBinding, + item: Triple, + payloads: MutableList + ) { + binding.apply { + cbFileName.text = item.second + } + } + + override fun registerListener( + holder: ItemViewHolder, + binding: ItemBookFileImportBinding + ) { + binding.apply { + cbFileName.setOnClickListener { + val selectFile = viewModel.allBookFiles[holder.layoutPosition] + if (selectFile.third) { + importFileAndUpdate(selectFile.first, selectFile.second) + } else { + alert( + title = getString(R.string.draw), + message = getString(R.string.file_not_supported, selectFile.second) + ) { + okButton { + importFileAndUpdate(selectFile.first, selectFile.second) + } + neutralButton(R.string.open_fun) { + downloadFile(selectFile.first, selectFile.second) + } + cancelButton() + } + } + } + } + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/association/ImportOnLineBookFileViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportOnLineBookFileViewModel.kt new file mode 100644 index 000000000..d601cd20e --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/association/ImportOnLineBookFileViewModel.kt @@ -0,0 +1,80 @@ +package io.legado.app.ui.association + +import android.app.Application +import android.net.Uri +import androidx.lifecycle.MutableLiveData +import io.legado.app.R +import io.legado.app.base.BaseViewModel +import io.legado.app.constant.AppPattern +import io.legado.app.constant.AppLog +import io.legado.app.constant.EventBus +import io.legado.app.data.appDb +import io.legado.app.data.entities.Book +import io.legado.app.data.entities.BookSource +import io.legado.app.exception.NoStackTraceException +import io.legado.app.model.analyzeRule.AnalyzeRule +import io.legado.app.model.analyzeRule.AnalyzeUrl +import io.legado.app.model.localBook.LocalBook +import io.legado.app.utils.* + +class ImportOnLineBookFileViewModel(app: Application) : BaseViewModel(app) { + + val allBookFiles = arrayListOf>() + val errorLiveData = MutableLiveData() + val successLiveData = MutableLiveData() + val savedFileUriData = MutableLiveData() + var bookSource: BookSource? = null + + fun initData(bookUrl: String?) { + execute { + bookUrl ?: throw NoStackTraceException("书籍详情页链接为空") + val book = appDb.searchBookDao.getSearchBook(bookUrl)?.toBook() + ?: throw NoStackTraceException("book is null") + bookSource = appDb.bookSourceDao.getBookSource(book.origin) + ?: throw NoStackTraceException("bookSource is null") + val ruleDownloadUrls = bookSource?.getBookInfoRule()?.downloadUrls + val content = AnalyzeUrl(bookUrl, source = bookSource).getStrResponse().body + val analyzeRule = AnalyzeRule(book, bookSource) + analyzeRule.setContent(content).setBaseUrl(bookUrl) + val fileName = "${book.name} 作者:${book.author}" + analyzeRule.getStringList(ruleDownloadUrls, isUrl = true)?.let { + it.forEach { url -> + val mFileName = "${fileName}.${LocalBook.parseFileSuffix(url)}" + val isSupportedFile = AppPattern.bookFileRegex.matches(mFileName) + allBookFiles.add(Triple(url, mFileName, isSupportedFile)) + } + } ?: throw NoStackTraceException("下载链接规则解析为空") + }.onSuccess { + successLiveData.postValue(allBookFiles.size) + }.onError { + errorLiveData.postValue(it.localizedMessage ?: "") + context.toastOnUi("获取书籍下载链接失败\n${it.localizedMessage}") + } + + } + + fun downloadUrl(url: String, fileName: String, success: () -> Unit) { + execute { + LocalBook.saveBookFile(url, fileName, bookSource).let { + savedFileUriData.postValue(it) + } + }.onSuccess { + success.invoke() + }.onError { + context.toastOnUi("下载书籍文件失败\n${it.localizedMessage}") + } + } + + fun importOnLineBookFile(url: String, fileName: String, success: () -> Unit) { + execute { + LocalBook.importFileOnLine(url, fileName, bookSource).let { + postEvent(EventBus.BOOK_URL_CHANGED, it.bookUrl) + } + }.onSuccess { + success.invoke() + }.onError { + context.toastOnUi("下载书籍文件失败\n${it.localizedMessage}") + } + } + +} diff --git a/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleDialog.kt b/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleDialog.kt index 895b0f8eb..e2d7474da 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleDialog.kt @@ -88,14 +88,14 @@ class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vi adapter.notifyDataSetChanged() upSelectText() } - viewModel.errorLiveData.observe(this, { + viewModel.errorLiveData.observe(this) { binding.rotateLoading.hide() binding.tvMsg.apply { text = it visible() } - }) - viewModel.successLiveData.observe(this, { + } + viewModel.successLiveData.observe(this) { binding.rotateLoading.hide() if (it > 0) { adapter.setItems(viewModel.allRules) @@ -106,7 +106,7 @@ class ImportReplaceRuleDialog() : BaseDialogFragment(R.layout.dialog_recycler_vi visible() } } - }) + } val source = arguments?.getString("source") if (source.isNullOrEmpty()) { dismiss() diff --git a/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt index 448e79be9..a4e050f22 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt @@ -6,12 +6,15 @@ import io.legado.app.base.BaseViewModel import io.legado.app.constant.AppPattern import io.legado.app.data.appDb import io.legado.app.data.entities.ReplaceRule +import io.legado.app.exception.NoStackTraceException import io.legado.app.help.ReplaceAnalyzer import io.legado.app.help.config.AppConfig import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient import io.legado.app.help.http.text import io.legado.app.utils.isAbsUrl +import io.legado.app.utils.isJsonArray +import io.legado.app.utils.isJsonObject import io.legado.app.utils.splitNotBlank class ImportReplaceRuleViewModel(app: Application) : BaseViewModel(app) { @@ -83,17 +86,7 @@ class ImportReplaceRuleViewModel(app: Application) : BaseViewModel(app) { fun import(text: String) { execute { - if (text.isAbsUrl()) { - okHttpClient.newCallResponseBody { - url(text) - }.text("utf-8").let { - val rules = ReplaceAnalyzer.jsonToReplaceRules(it) - allRules.addAll(rules) - } - } else { - val rules = ReplaceAnalyzer.jsonToReplaceRules(text) - allRules.addAll(rules) - } + importAwait(text.trim()) }.onError { errorLiveData.postValue(it.localizedMessage ?: "ERROR") }.onSuccess { @@ -101,6 +94,29 @@ class ImportReplaceRuleViewModel(app: Application) : BaseViewModel(app) { } } + private suspend fun importAwait(text: String) { + when { + text.isAbsUrl() -> importUrl(text) + text.isJsonArray() -> { + val rules = ReplaceAnalyzer.jsonToReplaceRules(text).getOrThrow() + allRules.addAll(rules) + } + text.isJsonObject() -> { + val rule = ReplaceAnalyzer.jsonToReplaceRule(text).getOrThrow() + allRules.add(rule) + } + else -> throw NoStackTraceException("格式不对") + } + } + + private suspend fun importUrl(url: String) { + okHttpClient.newCallResponseBody { + url(url) + }.text("utf-8").let { + importAwait(it) + } + } + private fun comparisonSource() { execute { allRules.forEach { diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt index 68ca73cbb..176c08f76 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt @@ -13,6 +13,7 @@ import androidx.activity.viewModels import io.legado.app.R import io.legado.app.base.VMBaseActivity import io.legado.app.constant.BookType +import io.legado.app.constant.EventBus import io.legado.app.constant.Theme import io.legado.app.data.appDb import io.legado.app.data.entities.Book @@ -26,6 +27,7 @@ import io.legado.app.lib.theme.bottomBackground import io.legado.app.lib.theme.getPrimaryTextColor import io.legado.app.model.BookCover import io.legado.app.ui.about.AppLogDialog +import io.legado.app.ui.association.ImportOnLineBookFileDialog import io.legado.app.ui.book.audio.AudioPlayActivity import io.legado.app.ui.book.changecover.ChangeCoverDialog import io.legado.app.ui.book.changesource.ChangeBookSourceDialog @@ -245,7 +247,7 @@ class BookInfoActivity : binding.tvToc.text = getString(R.string.toc_s, getString(R.string.loading)) } chapterList.isNullOrEmpty() -> { - binding.tvToc.text = getString(R.string.toc_s, getString(R.string.error_load_toc)) + binding.tvToc.text = if (viewModel.isImportBookOnLine) getString(R.string.click_read_button_load) else getString(R.string.toc_s, getString(R.string.error_load_toc)) } else -> { viewModel.bookData.value?.let { @@ -293,8 +295,14 @@ class BookInfoActivity : true } tvRead.setOnClickListener { - viewModel.bookData.value?.let { - readBook(it) + viewModel.bookData.value?.let { book -> + if (viewModel.isImportBookOnLine) { + showDialogFragment { + putString("bookUrl", book.bookUrl) + } + } else { + readBook(book) + } } ?: toastOnUi("Book is null") } tvShelf.setOnClickListener { @@ -497,4 +505,9 @@ class BookInfoActivity : } } + override fun observeLiveBus() { + observeEvent(EventBus.BOOK_URL_CHANGED) { + viewModel.changeToLocalBook(it) + } + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt index 2b43af08c..b60fbfa43 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt @@ -2,11 +2,13 @@ package io.legado.app.ui.book.info import android.app.Application import android.content.Intent +import android.net.Uri import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import io.legado.app.R import io.legado.app.base.BaseViewModel import io.legado.app.constant.AppLog +import io.legado.app.constant.BookType import io.legado.app.constant.EventBus import io.legado.app.data.appDb import io.legado.app.data.entities.Book @@ -30,6 +32,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { var inBookshelf = false var bookSource: BookSource? = null private var changeSourceCoroutine: Coroutine<*>? = null + var isImportBookOnLine = false fun initData(intent: Intent) { execute { @@ -73,8 +76,11 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { upCoverByRule(book) bookSource = if (book.isLocalBook()) null else appDb.bookSourceDao.getBookSource(book.origin) + isImportBookOnLine = (bookSource?.bookSourceType ?: BookType.local) == BookType.file if (book.tocUrl.isEmpty()) { loadBookInfo(book) + } else if (isImportBookOnLine) { + chapterListData.postValue(emptyList()) } else { val chapterList = appDb.bookChapterDao.getChapterList(book.bookUrl) if (chapterList.isNotEmpty()) { @@ -113,6 +119,9 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { WebBook.getBookInfo(this, bookSource, book, canReName = canReName) .onSuccess(IO) { bookData.postValue(book) + if (isImportBookOnLine) { + appDb.searchBookDao.update(book.toSearchBook()) + } if (inBookshelf) { appDb.bookDao.update(book) } @@ -141,6 +150,8 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { appDb.bookChapterDao.insert(*it.toTypedArray()) chapterListData.postValue(it) } + } else if (isImportBookOnLine) { + chapterListData.postValue(emptyList()) } else { bookSource?.let { bookSource -> WebBook.getChapterList(this, bookSource, book) @@ -282,4 +293,16 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { } } } + + fun changeToLocalBook(bookUrl: String) { + appDb.bookDao.getBook(bookUrl)?.let { localBook -> + isImportBookOnLine = false + inBookshelf = true + LocalBook.mergeBook(localBook, bookData.value).let { + bookData.postValue(it) + loadChapter(it) + } + } + } + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt index 099ee02df..27cdef098 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt @@ -229,8 +229,12 @@ abstract class BaseReadBookActivity : customView { alertBinding.root } yesButton { alertBinding.run { - val start = editStart.text?.toString()?.toInt() ?: 0 - val end = editEnd.text?.toString()?.toInt() ?: book.totalChapterNum + val start = editStart.text!!.toString().let { + if (it.isEmpty()) 0 else it.toInt() + } + val end = editEnd.text!!.toString().let { + if (it.isEmpty()) book.totalChapterNum else it.toInt() + } CacheBook.start(this@BaseReadBookActivity, book, start - 1, end - 1) } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index 1dde3bd62..28dccf780 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -61,41 +61,33 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { } private fun initBook(book: Book) { - if (ReadBook.book?.bookUrl != book.bookUrl) { - ReadBook.resetData(book) - isInitFinish = true - if (ReadBook.chapterSize == 0) { - if (book.tocUrl.isEmpty()) { - loadBookInfo(book) - } else { - loadChapterList(book) - } + val isSameBook = ReadBook.book?.bookUrl == book.bookUrl + if (isSameBook) ReadBook.upData(book) else ReadBook.resetData(book) + isInitFinish = true + if (ReadBook.chapterSize == 0) { + if (book.tocUrl.isEmpty()) { + loadBookInfo(book) } else { - if (ReadBook.durChapterIndex > ReadBook.chapterSize - 1) { - ReadBook.durChapterIndex = ReadBook.chapterSize - 1 - } - ReadBook.loadContent(resetPageOffset = true) + loadChapterList(book) } - syncBookProgress(book) - } else { - ReadBook.upData(book) - isInitFinish = true - if (ReadBook.chapterSize == 0) { - if (book.tocUrl.isEmpty()) { - loadBookInfo(book) - } else { - loadChapterList(book) - } + } else if (book.isLocalBook() + && LocalBook.getLastModified(book).getOrDefault(0L) > book.latestChapterTime + ) { + loadChapterList(book) + } else if (isSameBook) { + if (ReadBook.curTextChapter != null) { + ReadBook.callBack?.upContent(resetPageOffset = false) } else { - if (ReadBook.curTextChapter != null) { - ReadBook.callBack?.upContent(resetPageOffset = false) - } else { - ReadBook.loadContent(resetPageOffset = true) - } + ReadBook.loadContent(resetPageOffset = true) } - if (!BaseReadAloudService.isRun) { - syncBookProgress(book) + } else { + if (ReadBook.durChapterIndex > ReadBook.chapterSize - 1) { + ReadBook.durChapterIndex = ReadBook.chapterSize - 1 } + ReadBook.loadContent(resetPageOffset = isSameBook) + } + if (!isSameBook || !BaseReadAloudService.isRun) { + syncBookProgress(book) } if (!book.isLocalBook() && ReadBook.bookSource == null) { autoChangeSource(book.name, book.author) diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt index adf6afd12..76462ca18 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt @@ -9,10 +9,10 @@ import android.widget.LinearLayout import androidx.fragment.app.DialogFragment import androidx.preference.Preference import io.legado.app.R -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey import io.legado.app.help.config.ReadBookConfig +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.bottomBackground import io.legado.app.lib.theme.primaryColor import io.legado.app.model.ReadBook @@ -67,7 +67,7 @@ class MoreConfigDialog : DialogFragment() { (activity as ReadBookActivity).bottomDialog-- } - class ReadPreferenceFragment : BasePreferenceFragment(), + class ReadPreferenceFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { @SuppressLint("RestrictedApi") diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt index b64446039..e303a6d7e 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt @@ -10,12 +10,12 @@ import androidx.fragment.app.DialogFragment import androidx.preference.ListPreference import androidx.preference.Preference import io.legado.app.R -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey import io.legado.app.data.appDb import io.legado.app.help.IntentHelp import io.legado.app.lib.dialogs.SelectItem +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.primaryColor import io.legado.app.model.ReadAloud @@ -54,7 +54,7 @@ class ReadAloudConfigDialog : DialogFragment() { .commit() } - class ReadAloudPreferenceFragment : BasePreferenceFragment(), + class ReadAloudPreferenceFragment : PreferenceFragment(), SpeakEngineDialog.CallBack, SharedPreferences.OnSharedPreferenceChangeListener { diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt index 9b58c9a44..ed991ff58 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt @@ -18,6 +18,7 @@ import io.legado.app.databinding.ActivityBookSourceEditBinding import io.legado.app.help.config.LocalConfig import io.legado.app.lib.dialogs.SelectItem import io.legado.app.lib.dialogs.alert +import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.book.source.debug.BookSourceDebugActivity @@ -47,7 +48,7 @@ class BookSourceEditActivity : private val qrCodeResult = registerForActivityResult(QrCodeResult()) { it ?: return@registerForActivityResult viewModel.importSource(it) { source -> - upRecyclerView(source) + upSourceView(source) } } private val selectDoc = registerForActivityResult(HandleFileContract()) { @@ -68,7 +69,7 @@ class BookSourceEditActivity : softKeyboardTool.attachToWindow(window) initView() viewModel.initData(intent) { - upRecyclerView() + upSourceView() } } @@ -109,9 +110,10 @@ class BookSourceEditActivity : } } } + R.id.menu_clear_cookie -> viewModel.clearCookie(getSource().bookSourceUrl) R.id.menu_auto_complete -> viewModel.autoComplete = !viewModel.autoComplete R.id.menu_copy_source -> sendToClip(GSON.toJson(getSource())) - R.id.menu_paste_source -> viewModel.pasteSource { upRecyclerView(it) } + R.id.menu_paste_source -> viewModel.pasteSource { upSourceView(it) } R.id.menu_qr_code_camera -> qrCodeResult.launch() R.id.menu_share_str -> share(GSON.toJson(getSource())) R.id.menu_share_qr -> shareWithQr( @@ -139,6 +141,7 @@ class BookSourceEditActivity : binding.recyclerView.layoutManager = LinearLayoutManager(this) binding.recyclerView.adapter = adapter binding.tabLayout.setBackgroundColor(backgroundColor) + binding.tabLayout.setSelectedTabIndicatorColor(accentColor) binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabReselected(tab: TabLayout.Tab?) { @@ -186,12 +189,14 @@ class BookSourceEditActivity : binding.recyclerView.scrollToPosition(0) } - private fun upRecyclerView(source: BookSource? = viewModel.bookSource) { + private fun upSourceView(source: BookSource? = viewModel.bookSource) { source?.let { binding.cbIsEnable.isChecked = it.enabled binding.cbIsEnableFind.isChecked = it.enabledExplore + binding.cbIsEnableCookie.isChecked = it.enabledCookieJar ?: false binding.spType.setSelection( when (it.bookSourceType) { + BookType.file -> 3 BookType.image -> 2 BookType.audio -> 1 else -> 0 @@ -261,6 +266,7 @@ class BookSourceEditActivity : add(EditEntity("coverUrl", ir?.coverUrl, R.string.rule_cover_url)) add(EditEntity("tocUrl", ir?.tocUrl, R.string.rule_toc_url)) add(EditEntity("canReName", ir?.canReName, R.string.rule_can_re_name)) + add(EditEntity("downloadUrls", ir?.downloadUrls, R.string.download_url_rule)) } //目录页 val tr = source?.getTocRule() @@ -295,7 +301,9 @@ class BookSourceEditActivity : val source = viewModel.bookSource?.copy() ?: BookSource() source.enabled = binding.cbIsEnable.isChecked source.enabledExplore = binding.cbIsEnableFind.isChecked + source.enabledCookieJar = binding.cbIsEnableCookie.isChecked source.bookSourceType = when (binding.spType.selectedItemPosition) { + 3 -> BookType.file 2 -> BookType.image 1 -> BookType.audio else -> BookType.default @@ -389,6 +397,7 @@ class BookSourceEditActivity : "tocUrl" -> bookInfoRule.tocUrl = viewModel.ruleComplete(it.value, bookInfoRule.init, 2) "canReName" -> bookInfoRule.canReName = it.value + "downloadUrls" -> bookInfoRule.downloadUrls = viewModel.ruleComplete(it.value, bookInfoRule.init) } } tocEntities.forEach { diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt index 3bf1e3562..d9fe5ca83 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt @@ -7,6 +7,7 @@ import io.legado.app.data.appDb import io.legado.app.data.entities.BookSource import io.legado.app.exception.NoStackTraceException import io.legado.app.help.RuleComplete +import io.legado.app.help.http.CookieStore import io.legado.app.help.http.newCallStrResponse import io.legado.app.help.http.okHttpClient import io.legado.app.utils.* @@ -95,6 +96,12 @@ class BookSourceEditViewModel(application: Application) : BaseViewModel(applicat } } + fun clearCookie(url: String) { + execute { + CookieStore.removeCookie(url) + } + } + fun ruleComplete(rule: String?, preRule: String? = null, type: Int = 1): String? { if (autoComplete) { return RuleComplete.autoComplete(rule, preRule, type) diff --git a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt index ba6420570..7b152e77c 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt @@ -19,8 +19,10 @@ import io.legado.app.utils.gone import io.legado.app.utils.longToastOnUi import io.legado.app.utils.visible import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.isActive -import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.Dispatchers.Main +import kotlinx.coroutines.async +import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.withContext import java.util.concurrent.ConcurrentHashMap class ChapterListAdapter(context: Context, val callback: Callback) : @@ -54,17 +56,10 @@ class ChapterListAdapter(context: Context, val callback: Callback) : } - private val replaceRules - get() = callback.book?.let { - ContentProcessor.get(it.name, it.origin).getTitleReplaceRules() - } - private val useReplace - get() = AppConfig.tocUiUseReplace && callback.book?.getUseReplaceRule() == true private var upDisplayTileJob: Coroutine<*>? = null override fun onCurrentListChanged() { super.onCurrentListChanged() - upDisplayTitle() callback.onListChanged() } @@ -73,36 +68,50 @@ class ChapterListAdapter(context: Context, val callback: Callback) : displayTitleMap.clear() } - fun upDisplayTitle() { + fun upDisplayTitles(startIndex: Int) { upDisplayTileJob?.cancel() upDisplayTileJob = Coroutine.async(callback.scope) { - val replaceRules = replaceRules - val useReplace = useReplace - getItems().forEach { - if (!isActive) { - return@async + val book = callback.book ?: return@async + val replaceRules = ContentProcessor.get(book.name, book.origin).getTitleReplaceRules() + val useReplace = AppConfig.tocUiUseReplace && book.getUseReplaceRule() + val items = getItems() + async { + for (i in startIndex until items.size) { + val item = items[i] + if (displayTitleMap[item.title] == null) { + ensureActive() + val displayTitle = item.getDisplayTitle(replaceRules, useReplace) + ensureActive() + displayTitleMap[item.title] = displayTitle + withContext(Main) { + notifyItemChanged(i, true) + } + } } - if (displayTitleMap[it.title] == null) { - displayTitleMap[it.title] = it.getDisplayTitle(replaceRules, useReplace) + }.start() + async { + for (i in startIndex downTo 0) { + val item = items[i] + if (displayTitleMap[item.title] == null) { + ensureActive() + val displayTitle = item.getDisplayTitle(replaceRules, useReplace) + ensureActive() + displayTitleMap[item.title] = displayTitle + withContext(Main) { + notifyItemChanged(i, true) + } + } } - } + }.start() } } - override fun getViewBinding(parent: ViewGroup): ItemChapterListBinding { - return ItemChapterListBinding.inflate(inflater, parent, false) + private fun getDisplayTitle(chapter: BookChapter): String { + return displayTitleMap[chapter.title] ?: chapter.title } - private fun getDisplayTile(chapter: BookChapter): String { - var displayTitle = displayTitleMap[chapter.title] - if (displayTitle != null) { - return displayTitle - } - displayTitle = runBlocking { - chapter.getDisplayTitle(replaceRules, useReplace) - } - displayTitleMap[chapter.title] = displayTitle - return displayTitle + override fun getViewBinding(parent: ViewGroup): ItemChapterListBinding { + return ItemChapterListBinding.inflate(inflater, parent, false) } override fun convert( @@ -120,7 +129,7 @@ class ChapterListAdapter(context: Context, val callback: Callback) : } else { tvChapterName.setTextColor(context.getCompatColor(R.color.primaryText)) } - tvChapterName.text = getDisplayTile(item) + tvChapterName.text = getDisplayTitle(item) if (item.isVolume) { //卷名,如第一卷 突出显示 tvChapterItem.setBackgroundColor(context.getCompatColor(R.color.btn_bg_press)) @@ -138,6 +147,7 @@ class ChapterListAdapter(context: Context, val callback: Callback) : } upHasCache(binding, isDur, cached) } else { + tvChapterName.text = getDisplayTitle(item) upHasCache(binding, isDur, cached) } } @@ -150,8 +160,8 @@ class ChapterListAdapter(context: Context, val callback: Callback) : } } holder.itemView.setOnLongClickListener { - getItem(holder.layoutPosition)?.let { - context.longToastOnUi(getDisplayTile(it)) + getItem(holder.layoutPosition)?.let { item -> + context.longToastOnUi(getDisplayTitle(item)) } true } diff --git a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt index 7dbe80e92..a6e561347 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt @@ -97,7 +97,15 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt viewModel.bookData.value?.bookUrl?.let { bookUrl -> if (chapter.bookUrl == bookUrl) { adapter.cacheFileNames.add(chapter.getFileName()) - adapter.notifyItemChanged(chapter.index, true) + if (viewModel.searchKey.isNullOrEmpty()) { + adapter.notifyItemChanged(chapter.index, true) + } else { + adapter.getItems().forEachIndexed { index, bookChapter -> + if (bookChapter.index == chapter.index) { + adapter.notifyItemChanged(index, true) + } + } + } } } } @@ -128,12 +136,13 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt } } mLayoutManager.scrollToPositionWithOffset(scrollPos, 0) + adapter.upDisplayTitles(scrollPos) } } override fun clearDisplayTitle() { adapter.clearDisplayTitle() - adapter.upDisplayTitle() + adapter.upDisplayTitles(mLayoutManager.findFirstVisibleItemPosition()) } override val scope: CoroutineScope diff --git a/app/src/main/java/io/legado/app/ui/book/toc/TocActivity.kt b/app/src/main/java/io/legado/app/ui/book/toc/TocActivity.kt index 0dc596cb6..8cb93e35f 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/TocActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/TocActivity.kt @@ -59,10 +59,12 @@ class TocActivity : VMBaseActivity() { setOnSearchClickListener { tabLayout.gone() } setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String): Boolean { + viewModel.searchKey = query return false } override fun onQueryTextChange(newText: String): Boolean { + viewModel.searchKey = newText if (tabLayout.selectedTabPosition == 1) { viewModel.startBookmarkSearch(newText) } else { diff --git a/app/src/main/java/io/legado/app/ui/book/toc/TocViewModel.kt b/app/src/main/java/io/legado/app/ui/book/toc/TocViewModel.kt index b766fad2a..feb989943 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/TocViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/TocViewModel.kt @@ -12,6 +12,7 @@ class TocViewModel(application: Application) : BaseViewModel(application) { var bookData = MutableLiveData() var chapterListCallBack: ChapterListCallBack? = null var bookMarkCallBack: BookmarkCallBack? = null + var searchKey: String? = null fun initBook(bookUrl: String) { this.bookUrl = bookUrl diff --git a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt index 425651827..4e535001f 100644 --- a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt @@ -15,7 +15,6 @@ import androidx.preference.EditTextPreference import androidx.preference.ListPreference import androidx.preference.Preference import io.legado.app.R -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.AppLog import io.legado.app.constant.PreferKey import io.legado.app.help.config.AppConfig @@ -25,7 +24,7 @@ import io.legado.app.help.storage.* import io.legado.app.lib.dialogs.alert import io.legado.app.lib.permission.Permissions import io.legado.app.lib.permission.PermissionsCompat -import io.legado.app.lib.theme.accentColor +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.widget.dialog.TextDialog @@ -33,8 +32,9 @@ import io.legado.app.utils.* import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.launch import splitties.init.appCtx +import kotlin.collections.set -class BackupConfigFragment : BasePreferenceFragment(), +class BackupConfigFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { private val viewModel by activityViewModels() @@ -100,34 +100,18 @@ class BackupConfigFragment : BasePreferenceFragment(), override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.pref_config_backup) - findPreference(PreferKey.webDavUrl)?.let { - it.setOnBindEditTextListener { editText -> - editText.applyTint(requireContext().accentColor) - } - } - findPreference(PreferKey.webDavAccount)?.let { - it.setOnBindEditTextListener { editText -> - editText.applyTint(requireContext().accentColor) - } - } findPreference(PreferKey.webDavPassword)?.let { it.setOnBindEditTextListener { editText -> - editText.applyTint(requireContext().accentColor) editText.inputType = InputType.TYPE_TEXT_VARIATION_PASSWORD or InputType.TYPE_CLASS_TEXT } } - findPreference(PreferKey.webDavDir)?.let { - it.setOnBindEditTextListener { editText -> - editText.applyTint(requireContext().accentColor) - } - } upPreferenceSummary(PreferKey.webDavUrl, getPrefString(PreferKey.webDavUrl)) upPreferenceSummary(PreferKey.webDavAccount, getPrefString(PreferKey.webDavAccount)) upPreferenceSummary(PreferKey.webDavPassword, getPrefString(PreferKey.webDavPassword)) upPreferenceSummary(PreferKey.webDavDir, AppConfig.webDavDir) upPreferenceSummary(PreferKey.backupPath, getPrefString(PreferKey.backupPath)) - findPreference("web_dav_restore") + findPreference("web_dav_restore") ?.onLongClick { restoreDir.launch(); true } } @@ -226,7 +210,9 @@ class BackupConfigFragment : BasePreferenceFragment(), return super.onPreferenceTreeClick(preference) } - + /** + * 备份忽略设置 + */ private fun backupIgnore() { val checkedItems = BooleanArray(BackupConfig.ignoreKeys.size) { BackupConfig.ignoreConfig[BackupConfig.ignoreKeys[it]] ?: false diff --git a/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt index eca0334dd..45496d0c9 100644 --- a/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt @@ -7,16 +7,16 @@ import android.os.Bundle import android.view.View import androidx.preference.Preference import io.legado.app.R -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.PreferKey import io.legado.app.lib.dialogs.selector +import io.legado.app.lib.prefs.SwitchPreference +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.primaryColor import io.legado.app.model.BookCover -import io.legado.app.ui.widget.prefs.SwitchPreference import io.legado.app.utils.* import java.io.FileOutputStream -class CoverConfigFragment : BasePreferenceFragment(), +class CoverConfigFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { private val requestCodeCover = 111 diff --git a/app/src/main/java/io/legado/app/ui/config/OtherConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/OtherConfigFragment.kt index 4e7192418..5ffdede56 100644 --- a/app/src/main/java/io/legado/app/ui/config/OtherConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/OtherConfigFragment.kt @@ -6,16 +6,17 @@ import android.content.SharedPreferences import android.content.pm.PackageManager import android.os.Bundle import android.view.View +import androidx.core.view.postDelayed import androidx.fragment.app.activityViewModels import androidx.preference.ListPreference import androidx.preference.Preference import io.legado.app.R -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey import io.legado.app.databinding.DialogEditTextBinding import io.legado.app.help.config.AppConfig import io.legado.app.lib.dialogs.alert +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.primaryColor import io.legado.app.model.CheckSource import io.legado.app.receiver.SharedReceiverActivity @@ -26,7 +27,7 @@ import io.legado.app.utils.* import splitties.init.appCtx -class OtherConfigFragment : BasePreferenceFragment(), +class OtherConfigFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { private val viewModel by activityViewModels() @@ -131,9 +132,9 @@ class OtherConfigFragment : BasePreferenceFragment(), setProcessTextEnable(it.getBoolean(key, true)) } PreferKey.showDiscovery, PreferKey.showRss -> postEvent(EventBus.NOTIFY_MAIN, true) - PreferKey.language -> listView.postDelayed({ + PreferKey.language -> listView.postDelayed(1000) { appCtx.restart() - }, 1000) + } PreferKey.userAgent -> listView.post { upPreferenceSummary(PreferKey.userAgent, AppConfig.userAgent) } diff --git a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt index d143ac8e1..567217e07 100644 --- a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt @@ -13,7 +13,6 @@ import android.widget.SeekBar import androidx.preference.Preference import io.legado.app.R import io.legado.app.base.AppContextWrapper -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.AppConst import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey @@ -24,16 +23,17 @@ import io.legado.app.help.config.AppConfig import io.legado.app.help.config.ThemeConfig import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.selector +import io.legado.app.lib.prefs.ColorPreference +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.widget.number.NumberPickerDialog -import io.legado.app.ui.widget.prefs.ColorPreference import io.legado.app.ui.widget.seekbar.SeekBarChangeListener import io.legado.app.utils.* import java.io.FileOutputStream @Suppress("SameParameterValue") -class ThemeConfigFragment : BasePreferenceFragment(), +class ThemeConfigFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { private val requestCodeBgLight = 121 diff --git a/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt index 60d205b4c..2e9ea30c5 100644 --- a/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/WelcomeConfigFragment.kt @@ -7,15 +7,15 @@ import android.os.Bundle import android.view.View import androidx.preference.Preference import io.legado.app.R -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.PreferKey import io.legado.app.lib.dialogs.selector +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.primaryColor import io.legado.app.model.BookCover import io.legado.app.utils.* import java.io.FileOutputStream -class WelcomeConfigFragment : BasePreferenceFragment(), +class WelcomeConfigFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { private val requestWelcomeImage = 221 diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index dda7b1adb..cba86573f 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -8,6 +8,7 @@ import android.view.KeyEvent import android.view.MenuItem import android.view.ViewGroup import androidx.activity.viewModels +import androidx.core.view.postDelayed import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentStatePagerAdapter @@ -87,13 +88,13 @@ class MainActivity : VMBaseActivity(), upVersion() //自动更新书籍 if (AppConfig.autoRefreshBook) { - binding.viewPagerMain.postDelayed({ + binding.viewPagerMain.postDelayed(1000) { viewModel.upAllBookToc() - }, 1000) + } } - binding.viewPagerMain.postDelayed({ + binding.viewPagerMain.postDelayed(3000) { viewModel.postLoad() - }, 3000) + } launch { val lastBackupFile = withContext(IO) { AppWebDav.lastBackUp().getOrNull() } ?: return@launch diff --git a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt index 92c31c288..df40f6cad 100644 --- a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt @@ -8,13 +8,16 @@ import android.view.View import androidx.preference.Preference import io.legado.app.R import io.legado.app.base.BaseFragment -import io.legado.app.base.BasePreferenceFragment import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey import io.legado.app.databinding.FragmentMyConfigBinding import io.legado.app.help.config.AppConfig import io.legado.app.help.config.ThemeConfig import io.legado.app.lib.dialogs.selector +import io.legado.app.lib.prefs.NameListPreference +import io.legado.app.lib.prefs.PreferenceCategory +import io.legado.app.lib.prefs.SwitchPreference +import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.primaryColor import io.legado.app.service.WebService import io.legado.app.ui.about.AboutActivity @@ -26,9 +29,6 @@ import io.legado.app.ui.config.ConfigActivity import io.legado.app.ui.config.ConfigTag import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.widget.dialog.TextDialog -import io.legado.app.ui.widget.prefs.NameListPreference -import io.legado.app.ui.widget.prefs.PreferenceCategory -import io.legado.app.ui.widget.prefs.SwitchPreference import io.legado.app.utils.* import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -40,7 +40,7 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config) { setSupportToolbar(binding.titleBar.toolbar) val fragmentTag = "prefFragment" var preferenceFragment = childFragmentManager.findFragmentByTag(fragmentTag) - if (preferenceFragment == null) preferenceFragment = PreferenceFragment() + if (preferenceFragment == null) preferenceFragment = MyPreferenceFragment() childFragmentManager.beginTransaction() .replace(R.id.pre_fragment, preferenceFragment, fragmentTag).commit() } @@ -61,7 +61,7 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config) { /** * 配置 */ - class PreferenceFragment : BasePreferenceFragment(), + class MyPreferenceFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt index 296965a1e..cf769b459 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt @@ -14,6 +14,7 @@ import io.legado.app.base.VMBaseActivity import io.legado.app.databinding.ActivityRssArtivlesBinding import io.legado.app.databinding.DialogEditTextBinding import io.legado.app.lib.dialogs.alert +import io.legado.app.lib.theme.accentColor import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.rss.source.edit.RssSourceEditActivity import io.legado.app.utils.StartActivityContract @@ -45,9 +46,10 @@ class RssSortActivity : VMBaseActivity - upRecyclerView(source) + upSourceView(source) } } } @@ -57,7 +57,7 @@ class RssSourceEditActivity : softKeyboardTool.attachToWindow(window) initView() viewModel.initData(intent) { - upRecyclerView() + upSourceView() } } @@ -130,10 +130,11 @@ class RssSourceEditActivity : } } } + R.id.menu_clear_cookie -> viewModel.clearCookie(getRssSource().sourceUrl) R.id.menu_auto_complete -> viewModel.autoComplete = !viewModel.autoComplete R.id.menu_copy_source -> sendToClip(GSON.toJson(getRssSource())) R.id.menu_qr_code_camera -> qrCodeResult.launch() - R.id.menu_paste_source -> viewModel.pasteSource { upRecyclerView(it) } + R.id.menu_paste_source -> viewModel.pasteSource { upSourceView(it) } R.id.menu_share_str -> share(GSON.toJson(getRssSource())) R.id.menu_share_qr -> shareWithQr( GSON.toJson(getRssSource()), @@ -150,10 +151,11 @@ class RssSourceEditActivity : binding.recyclerView.adapter = adapter } - private fun upRecyclerView(source: RssSource? = viewModel.rssSource) { + private fun upSourceView(source: RssSource? = viewModel.rssSource) { source?.let { binding.cbIsEnable.isChecked = source.enabled binding.cbSingleUrl.isChecked = source.singleUrl + binding.cbIsEnableCookie.isChecked = source.enabledCookieJar == true binding.cbEnableJs.isChecked = source.enableJs binding.cbEnableBaseUrl.isChecked = source.loadWithBaseUrl } @@ -191,6 +193,7 @@ class RssSourceEditActivity : val source = viewModel.rssSource source.enabled = binding.cbIsEnable.isChecked source.singleUrl = binding.cbSingleUrl.isChecked + source.enabledCookieJar = binding.cbIsEnableCookie.isChecked source.enableJs = binding.cbEnableJs.isChecked source.loadWithBaseUrl = binding.cbEnableBaseUrl.isChecked sourceEntities.forEach { diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt index 25002eb3a..da911a5f4 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt @@ -6,6 +6,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.appDb import io.legado.app.data.entities.RssSource import io.legado.app.help.RuleComplete +import io.legado.app.help.http.CookieStore import io.legado.app.utils.getClipText import io.legado.app.utils.msg import io.legado.app.utils.printOnDebug @@ -77,6 +78,12 @@ class RssSourceEditViewModel(application: Application) : BaseViewModel(applicati } } + fun clearCookie(url: String) { + execute { + CookieStore.removeCookie(url) + } + } + fun ruleComplete(rule: String?, preRule: String? = null, type: Int = 1): String? { if (autoComplete) { return RuleComplete.autoComplete(rule, preRule, type) diff --git a/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt b/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt index cc98722d7..2d6d007e6 100644 --- a/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt +++ b/app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt @@ -3,6 +3,7 @@ package io.legado.app.ui.welcome import android.content.Intent import android.graphics.drawable.BitmapDrawable import android.os.Bundle +import androidx.core.view.postDelayed import io.legado.app.base.BaseActivity import io.legado.app.constant.PreferKey import io.legado.app.constant.Theme @@ -26,7 +27,7 @@ open class WelcomeActivity : BaseActivity() { if (intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) { finish() } else { - binding.root.postDelayed({ startMainActivity() }, 600) + binding.root.postDelayed(600) { startMainActivity() } } } diff --git a/app/src/main/java/io/legado/app/ui/widget/checkbox/SmoothCheckBox.kt b/app/src/main/java/io/legado/app/ui/widget/checkbox/SmoothCheckBox.kt index 7322519c9..7afa0e27a 100644 --- a/app/src/main/java/io/legado/app/ui/widget/checkbox/SmoothCheckBox.kt +++ b/app/src/main/java/io/legado/app/ui/widget/checkbox/SmoothCheckBox.kt @@ -7,6 +7,7 @@ import android.util.AttributeSet import android.view.View import android.view.animation.LinearInterpolator import android.widget.Checkable +import androidx.core.view.postDelayed import io.legado.app.R import io.legado.app.lib.theme.ThemeStore import io.legado.app.utils.dpToPx @@ -244,7 +245,7 @@ class SmoothCheckBox @JvmOverloads constructor( } // invalidate if (mDrewDistance < mLeftLineDistance + mRightLineDistance) { - postDelayed({ this.postInvalidate() }, 10) + postDelayed(10) { this.postInvalidate() } } } @@ -298,10 +299,10 @@ class SmoothCheckBox @JvmOverloads constructor( } private fun drawTickDelayed() { - postDelayed({ + postDelayed(mAnimDuration.toLong()) { mTickDrawing = true postInvalidate() - }, mAnimDuration.toLong()) + } } companion object { diff --git a/app/src/main/java/io/legado/app/ui/widget/prefs/EditTextPreference.kt b/app/src/main/java/io/legado/app/ui/widget/prefs/EditTextPreference.kt deleted file mode 100644 index 97ffa92b8..000000000 --- a/app/src/main/java/io/legado/app/ui/widget/prefs/EditTextPreference.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.legado.app.ui.widget.prefs - -import android.content.Context -import android.util.AttributeSet -import android.widget.TextView -import androidx.preference.PreferenceViewHolder -import io.legado.app.R - -class EditTextPreference(context: Context, attrs: AttributeSet) : - androidx.preference.EditTextPreference(context, attrs) { - - init { - // isPersistent = true - layoutResource = R.layout.view_preference - } - - override fun onBindViewHolder(holder: PreferenceViewHolder) { - Preference.bindView(context, holder, icon, title, summary, null, null) - super.onBindViewHolder(holder) - } - -} diff --git a/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt b/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt index c83147618..c198a8f4b 100644 --- a/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt +++ b/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt @@ -15,6 +15,7 @@ import android.widget.FrameLayout.LayoutParams import androidx.appcompat.widget.AppCompatTextView import io.legado.app.R import io.legado.app.lib.theme.accentColor +import io.legado.app.utils.ColorUtils import io.legado.app.utils.getCompatColor import io.legado.app.utils.invisible import io.legado.app.utils.visible @@ -87,8 +88,6 @@ class BadgeView @JvmOverloads constructor( setLayoutParams(layoutParams) } - // set default font - setTextColor(Color.WHITE) //setTypeface(Typeface.DEFAULT_BOLD); setTextSize(TypedValue.COMPLEX_UNIT_SP, 11f) setPadding(dip2Px(5f), dip2Px(1f), dip2Px(5f), dip2Px(1f)) @@ -106,6 +105,10 @@ class BadgeView @JvmOverloads constructor( minHeight = dip2Px(16f) } + override fun setBackgroundColor(color: Int) { + setBackground(radius, color) + } + fun setBackground(dipRadius: Float, badgeColor: Int) { val radius = dip2Px(dipRadius).toFloat() val radiusArray = @@ -118,10 +121,13 @@ class BadgeView @JvmOverloads constructor( val bgDrawable = ShapeDrawable(roundRect) bgDrawable.paint.color = badgeColor background = bgDrawable - } - - fun setBackground(badgeColor: Int) { - setBackground(radius, badgeColor) + setTextColor( + if (ColorUtils.isColorLight(badgeColor)) { + Color.BLACK + } else { + Color.WHITE + } + ) } /** @@ -142,9 +148,9 @@ class BadgeView @JvmOverloads constructor( fun setHighlight(highlight: Boolean) { if (highlight) { - setBackground(context.accentColor) + setBackgroundColor(context.accentColor) } else { - setBackground(context.getCompatColor(R.color.darker_gray)) + setBackgroundColor(context.getCompatColor(R.color.darker_gray)) } } diff --git a/app/src/main/java/io/legado/app/utils/ColorUtils.kt b/app/src/main/java/io/legado/app/utils/ColorUtils.kt index 8105bab29..12fc9a709 100644 --- a/app/src/main/java/io/legado/app/utils/ColorUtils.kt +++ b/app/src/main/java/io/legado/app/utils/ColorUtils.kt @@ -1,20 +1,22 @@ package io.legado.app.utils import android.graphics.Color - import androidx.annotation.ColorInt import androidx.annotation.FloatRange -import java.util.* +import androidx.core.graphics.ColorUtils import kotlin.math.* @Suppress("unused", "MemberVisibilityCanBePrivate") object ColorUtils { + fun isColorLight(@ColorInt color: Int): Boolean { + return ColorUtils.calculateLuminance(color) >= 0.5 + } + fun intToString(intColor: Int): String { return String.format("#%06X", 0xFFFFFF and intColor) } - fun stripAlpha(@ColorInt color: Int): Int { return -0x1000000 or color } @@ -39,12 +41,6 @@ object ColorUtils { return shiftColor(color, 1.1f) } - fun isColorLight(@ColorInt color: Int): Boolean { - val darkness = - 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255 - return darkness < 0.4 - } - @ColorInt fun invertColor(@ColorInt color: Int): Int { val r = 255 - Color.red(color) @@ -81,83 +77,6 @@ object ColorUtils { return Color.argb(a.toInt(), r.toInt(), g.toInt(), b.toInt()) } - /** - * 按条件的到随机颜色 - * - * @param alpha 透明 - * @param lower 下边界 - * @param upper 上边界 - * @return 颜色值 - */ - fun getRandomColor(alpha: Int, lower: Int, upper: Int): Int { - return RandomColor(alpha, lower, upper).color - } - - /** - * @return 获取随机色 - */ - fun getRandomColor(): Int { - return RandomColor(255, 80, 200).color - } - - - /** - * 随机颜色 - */ - class RandomColor(alpha: Int, lower: Int, upper: Int) { - private var alpha: Int = 0 - private var lower: Int = 0 - private var upper: Int = 0 - - //随机数是前闭 后开 - val color: Int - get() { - val red = getLower() + Random().nextInt(getUpper() - getLower() + 1) - val green = getLower() + Random().nextInt(getUpper() - getLower() + 1) - val blue = getLower() + Random().nextInt(getUpper() - getLower() + 1) - - return Color.argb(getAlpha(), red, green, blue) - } - - init { - require(upper > lower) { "must be lower < upper" } - setAlpha(alpha) - setLower(lower) - setUpper(upper) - } - - private fun getAlpha(): Int { - return alpha - } - - private fun setAlpha(alpha: Int) { - var alpha1 = alpha - if (alpha1 > 255) alpha1 = 255 - if (alpha1 < 0) alpha1 = 0 - this.alpha = alpha1 - } - - private fun getLower(): Int { - return lower - } - - private fun setLower(lower: Int) { - var lower1 = lower - if (lower1 < 0) lower1 = 0 - this.lower = lower1 - } - - private fun getUpper(): Int { - return upper - } - - private fun setUpper(upper: Int) { - var upper1 = upper - if (upper1 > 255) upper1 = 255 - this.upper = upper1 - } - } - fun argb(R: Int, G: Int, B: Int): Int { return argb(Byte.MAX_VALUE.toInt(), R, G, B) } @@ -177,72 +96,19 @@ object ColorUtils { + (colorByteArr[2].toInt() and 0xFF shl 8) + (colorByteArr[3].toInt() and 0xFF)) } - fun rgb2lab(R: Int, G: Int, B: Int): IntArray { - val x: Float - val y: Float - val z: Float - val fx: Float - val fy: Float - val fz: Float - val xr: Float - val yr: Float - val zr: Float - val eps = 216f / 24389f - val k = 24389f / 27f - val xr1 = 0.964221f // reference white D50 - val yr1 = 1.0f - val zr1 = 0.825211f - - // RGB to XYZ - var r: Float = R / 255f //R 0..1 - var g: Float = G / 255f //G 0..1 - var b: Float = B / 255f //B 0..1 - - // assuming sRGB (D65) - r = if (r <= 0.04045) r / 12 else ((r + 0.055) / 1.055).pow(2.4).toFloat() - g = if (g <= 0.04045) g / 12 else ((g + 0.055) / 1.055).pow(2.4).toFloat() - b = if (b <= 0.04045) b / 12 else ((b + 0.055) / 1.055).pow(2.4).toFloat() - x = 0.436052025f * r + 0.385081593f * g + 0.143087414f * b - y = 0.222491598f * r + 0.71688606f * g + 0.060621486f * b - z = 0.013929122f * r + 0.097097002f * g + 0.71418547f * b - - // XYZ to Lab - xr = x / xr1 - yr = y / yr1 - zr = z / zr1 - fx = if (xr > eps) xr.toDouble().pow(1 / 3.0) - .toFloat() else ((k * xr + 16.0) / 116.0).toFloat() - fy = if (yr > eps) yr.toDouble().pow(1 / 3.0) - .toFloat() else ((k * yr + 16.0) / 116.0).toFloat() - fz = if (zr > eps) zr.toDouble().pow(1 / 3.0) - .toFloat() else ((k * zr + 16.0) / 116).toFloat() - val ls: Float = 116 * fy - 16 - val `as`: Float = 500 * (fx - fy) - val bs: Float = 200 * (fy - fz) - val lab = IntArray(3) - lab[0] = (2.55 * ls + .5).toInt() - lab[1] = (`as` + .5).toInt() - lab[2] = (bs + .5).toInt() - return lab - } - /** * Computes the difference between two RGB colors by converting them to the L*a*b scale and * comparing them using the CIE76 algorithm { http://en.wikipedia.org/wiki/Color_difference#CIE76} */ fun getColorDifference(a: Int, b: Int): Double { - val r1: Int = Color.red(a) - val g1: Int = Color.green(a) - val b1: Int = Color.blue(a) - val r2: Int = Color.red(b) - val g2: Int = Color.green(b) - val b2: Int = Color.blue(b) - val lab1 = rgb2lab(r1, g1, b1) - val lab2 = rgb2lab(r2, g2, b2) + val lab1 = DoubleArray(3) + val lab2 = DoubleArray(3) + ColorUtils.colorToLAB(a, lab1) + ColorUtils.colorToLAB(b, lab2) return sqrt( - (lab2[0] - lab1[0].toDouble()) - .pow(2.0) + (lab2[1] - lab1[1].toDouble()) - .pow(2.0) + (lab2[2] - lab1[2].toDouble()) + (lab2[0] - lab1[0]) + .pow(2.0) + (lab2[1] - lab1[1]) + .pow(2.0) + (lab2[2] - lab1[2]) .pow(2.0) ) } diff --git a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt index 4f0de7360..94e35680c 100644 --- a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt @@ -331,6 +331,7 @@ fun Context.openFileUri(uri: Uri, type: String? = null) { @Suppress("DEPRECATION") val Context.isWifiConnect: Boolean + @SuppressLint("MissingPermission") get() { val info = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI) return info?.isConnected == true @@ -338,7 +339,7 @@ val Context.isWifiConnect: Boolean val Context.isPad: Boolean get() { - return resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK >= Configuration.SCREENLAYOUT_SIZE_LARGE + return (resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE } val Context.channel: String diff --git a/app/src/main/java/io/legado/app/utils/RandomColor.kt b/app/src/main/java/io/legado/app/utils/RandomColor.kt new file mode 100644 index 000000000..526afa6cc --- /dev/null +++ b/app/src/main/java/io/legado/app/utils/RandomColor.kt @@ -0,0 +1,61 @@ +package io.legado.app.utils + +import android.graphics.Color +import java.util.* + +@Suppress("unused") +class RandomColor(alpha: Int, lower: Int, upper: Int) { + + constructor() : this(255, 80, 200) + + private var alpha: Int = 0 + private var lower: Int = 0 + private var upper: Int = 0 + + init { + require(upper > lower) { "must be lower < upper" } + setAlpha(alpha) + setLower(lower) + setUpper(upper) + } + + //随机数是前闭 后开 + fun build(): Int { + val red = getLower() + Random().nextInt(getUpper() - getLower() + 1) + val green = getLower() + Random().nextInt(getUpper() - getLower() + 1) + val blue = getLower() + Random().nextInt(getUpper() - getLower() + 1) + return Color.argb(getAlpha(), red, green, blue) + } + + private fun getAlpha(): Int { + return alpha + } + + private fun setAlpha(alpha: Int) { + var alpha1 = alpha + if (alpha1 > 255) alpha1 = 255 + if (alpha1 < 0) alpha1 = 0 + this.alpha = alpha1 + } + + private fun getLower(): Int { + return lower + } + + private fun setLower(lower: Int) { + var lower1 = lower + if (lower1 < 0) lower1 = 0 + this.lower = lower1 + } + + private fun getUpper(): Int { + return upper + } + + private fun setUpper(upper: Int) { + var upper1 = upper + if (upper1 > 255) upper1 = 255 + this.upper = upper1 + } + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/utils/RegexExtensions.kt b/app/src/main/java/io/legado/app/utils/RegexExtensions.kt index 188b1ea9a..0918ae232 100644 --- a/app/src/main/java/io/legado/app/utils/RegexExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/RegexExtensions.kt @@ -1,11 +1,13 @@ package io.legado.app.utils +import androidx.core.os.postDelayed import io.legado.app.exception.RegexTimeoutException import io.legado.app.help.CrashHandler import kotlinx.coroutines.suspendCancellableCoroutine import splitties.init.appCtx import kotlin.concurrent.thread import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException /** * 带有超时检测的正则替换 @@ -19,23 +21,23 @@ suspend fun CharSequence.replace(regex: Regex, replacement: String, timeout: Lon val result = regex.replace(charSequence, replacement) block.resume(result) } catch (e: Exception) { - block.cancel(e) + block.resumeWithException(e) } } - mainHandler.postDelayed({ + mainHandler.postDelayed(timeout) { if (thread.isAlive) { val timeoutMsg = "替换超时,3秒后还未结束将重启应用\n替换规则$regex\n替换内容:${this}" val exception = RegexTimeoutException(timeoutMsg) block.cancel(exception) appCtx.longToastOnUi(timeoutMsg) CrashHandler.saveCrashInfo2File(exception) - mainHandler.postDelayed({ + mainHandler.postDelayed(3000) { if (thread.isAlive) { appCtx.restart() } - }, 3000) + } } - }, timeout) + } } } diff --git a/app/src/main/java/io/legado/app/web/HttpServer.kt b/app/src/main/java/io/legado/app/web/HttpServer.kt index f593c0647..a141b0c9f 100644 --- a/app/src/main/java/io/legado/app/web/HttpServer.kt +++ b/app/src/main/java/io/legado/app/web/HttpServer.kt @@ -42,6 +42,7 @@ class HttpServer(port: Int) : NanoHTTPD(port) { "/saveBookSources" -> BookSourceController.saveSources(postData) "/deleteBookSources" -> BookSourceController.deleteSources(postData) "/saveBook" -> BookController.saveBook(postData) + "/saveBookProgress" -> BookController.saveBookProgress(postData) "/addLocalBook" -> BookController.addLocalBook(session.parameters) "/saveReadConfig" -> BookController.saveWebReadConfig(postData) "/saveRssSource" -> RssSourceController.saveSource(postData) diff --git a/app/src/main/res/layout/activity_book_source_edit.xml b/app/src/main/res/layout/activity_book_source_edit.xml index a6f529472..ceae414f2 100644 --- a/app/src/main/res/layout/activity_book_source_edit.xml +++ b/app/src/main/res/layout/activity_book_source_edit.xml @@ -33,6 +33,13 @@ android:checked="true" android:text="@string/discovery" /> + + + + + + + + + diff --git a/app/src/main/res/menu/source_edit.xml b/app/src/main/res/menu/source_edit.xml index dc20d0f20..140c935b2 100644 --- a/app/src/main/res/menu/source_edit.xml +++ b/app/src/main/res/menu/source_edit.xml @@ -21,6 +21,11 @@ android:title="@string/login" app:showAsAction="never" /> + + Texto Audio Image + File diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index d9f089e01..741265978 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -978,5 +978,10 @@ 导入TTS 导入主题 导入txt目录规则 + CookieJar + 点击阅读加载目录 + 清除cookie + 导入在线书籍文件 + diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 7dfa85ddd..e24e9b362 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -981,5 +981,10 @@ 导入TTS 导入主题 导入txt目录规则 + CookieJar + 点击阅读加载目录 + 清除cookie + 导入在线书籍文件 + diff --git a/app/src/main/res/values-pt-rBR/arrays.xml b/app/src/main/res/values-pt-rBR/arrays.xml index aaa9e60d6..4739b9d08 100644 --- a/app/src/main/res/values-pt-rBR/arrays.xml +++ b/app/src/main/res/values-pt-rBR/arrays.xml @@ -4,6 +4,7 @@ Texto Áudio Image + File diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 1267823f2..95fb2ec20 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -981,5 +981,10 @@ 导入TTS 导入主题 导入txt目录规则 + CookieJar + 点击阅读加载目录 + 清除cookie + 导入在线书籍文件 + diff --git a/app/src/main/res/values-zh-rHK/arrays.xml b/app/src/main/res/values-zh-rHK/arrays.xml index ca4ebc0fc..0eaf1a340 100644 --- a/app/src/main/res/values-zh-rHK/arrays.xml +++ b/app/src/main/res/values-zh-rHK/arrays.xml @@ -5,6 +5,7 @@ 文本 音頻 图片 + 文件 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ef0fe4e40..3b97eaf2b 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -978,5 +978,10 @@ 导入TTS 导入主题 导入txt目录规则 + CookieJar + 点击阅读加载目录 + 清除cookie + 导入在线书籍文件 + diff --git a/app/src/main/res/values-zh-rTW/arrays.xml b/app/src/main/res/values-zh-rTW/arrays.xml index 019b34be3..3487a326a 100644 --- a/app/src/main/res/values-zh-rTW/arrays.xml +++ b/app/src/main/res/values-zh-rTW/arrays.xml @@ -4,6 +4,7 @@ 文字 音訊 图片 + 文件 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 5af20d737..975d7dbba 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -980,5 +980,10 @@ 导入TTS 导入主题 导入txt目录规则 + CookieJar + 点击阅读加载目录 + 清除cookie + 导入在线书籍文件 + diff --git a/app/src/main/res/values-zh/arrays.xml b/app/src/main/res/values-zh/arrays.xml index 970ae369c..d44eceafb 100644 --- a/app/src/main/res/values-zh/arrays.xml +++ b/app/src/main/res/values-zh/arrays.xml @@ -4,6 +4,7 @@ 文本 音频 图片 + 文件 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index b7204f02d..018ccb9d8 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -980,5 +980,9 @@ 导入TTS 导入主题 导入txt目录规则 + CookieJar + 点击阅读加载目录 + 清除cookie + 导入在线书籍文件 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 8bc2d5232..47dd6b09a 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -4,6 +4,7 @@ Text Audio Image + File diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a2b8c594c..e6352d380 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -988,5 +988,10 @@ 导入TTS 导入主题 导入txt目录规则 + CookieJar + 点击阅读加载目录 + 清除cookie + 导入在线书籍文件 + diff --git a/app/src/main/res/xml/about.xml b/app/src/main/res/xml/about.xml index d0a498c0d..b62f4a2f4 100644 --- a/app/src/main/res/xml/about.xml +++ b/app/src/main/res/xml/about.xml @@ -2,82 +2,82 @@ - - - - - - - - - - - - - - + - - - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/donate.xml b/app/src/main/res/xml/donate.xml index 1b4d7af60..9b43609cb 100644 --- a/app/src/main/res/xml/donate.xml +++ b/app/src/main/res/xml/donate.xml @@ -2,20 +2,20 @@ - - - - + - - - - - + - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_config_aloud.xml b/app/src/main/res/xml/pref_config_aloud.xml index edb0e7ca7..333e0aa40 100644 --- a/app/src/main/res/xml/pref_config_aloud.xml +++ b/app/src/main/res/xml/pref_config_aloud.xml @@ -2,38 +2,38 @@ - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_config_backup.xml b/app/src/main/res/xml/pref_config_backup.xml index 06085208d..faf7e214b 100644 --- a/app/src/main/res/xml/pref_config_backup.xml +++ b/app/src/main/res/xml/pref_config_backup.xml @@ -2,39 +2,39 @@ - - - - - - - + - - - - - - - + diff --git a/app/src/main/res/xml/pref_config_cover.xml b/app/src/main/res/xml/pref_config_cover.xml index ca692fb57..1d8db29ed 100644 --- a/app/src/main/res/xml/pref_config_cover.xml +++ b/app/src/main/res/xml/pref_config_cover.xml @@ -2,13 +2,13 @@ - - - - - - - - + - - - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_config_other.xml b/app/src/main/res/xml/pref_config_other.xml index 0b0d6ffa8..931deb5f9 100644 --- a/app/src/main/res/xml/pref_config_other.xml +++ b/app/src/main/res/xml/pref_config_other.xml @@ -2,41 +2,41 @@ - - - - - - - + - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_config_read.xml b/app/src/main/res/xml/pref_config_read.xml index 4b26da4b7..1c8a29afb 100644 --- a/app/src/main/res/xml/pref_config_read.xml +++ b/app/src/main/res/xml/pref_config_read.xml @@ -2,7 +2,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_config_welcome.xml b/app/src/main/res/xml/pref_config_welcome.xml index 66f780983..bdd19fe68 100644 --- a/app/src/main/res/xml/pref_config_welcome.xml +++ b/app/src/main/res/xml/pref_config_welcome.xml @@ -2,7 +2,7 @@ - - - - - - + - - - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_main.xml b/app/src/main/res/xml/pref_main.xml index 45cba0157..70d80013d 100644 --- a/app/src/main/res/xml/pref_main.xml +++ b/app/src/main/res/xml/pref_main.xml @@ -5,21 +5,21 @@ app:allowDividerAbove="false" app:allowDividerBelow="false"> - - - - - - - - - + - - - - - - + \ No newline at end of file