@zykjcommon/questions 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10334,6 +10334,1018 @@ if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {
10334
10334
 
10335
10335
  /***/ }),
10336
10336
 
10337
+ /***/ 2437:
10338
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10339
+
10340
+ // THIS FILE IS GENERATED - DO NOT EDIT!
10341
+ /*!mobile-detect v1.4.5 2021-03-13*/
10342
+ /*global module:false, define:false*/
10343
+ /*jshint latedef:false*/
10344
+ /*!@license Copyright 2013, Heinrich Goebl, License: MIT, see https://github.com/hgoebl/mobile-detect.js*/
10345
+ (function (define, undefined) {
10346
+ define(function () {
10347
+ 'use strict';
10348
+
10349
+ var impl = {};
10350
+
10351
+ impl.mobileDetectRules = {
10352
+ "phones": {
10353
+ "iPhone": "\\biPhone\\b|\\biPod\\b",
10354
+ "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",
10355
+ "Pixel": "; \\bPixel\\b",
10356
+ "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",
10357
+ "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",
10358
+ "Dell": "Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",
10359
+ "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",
10360
+ "Samsung": "\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",
10361
+ "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",
10362
+ "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",
10363
+ "Asus": "Asus.*Galaxy|PadFone.*Mobile",
10364
+ "Xiaomi": "^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",
10365
+ "NokiaLumia": "Lumia [0-9]{3,4}",
10366
+ "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",
10367
+ "Palm": "PalmSource|Palm",
10368
+ "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",
10369
+ "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",
10370
+ "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",
10371
+ "Wiko": "KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",
10372
+ "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",
10373
+ "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",
10374
+ "Wolfgang": "AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",
10375
+ "Alcatel": "Alcatel",
10376
+ "Nintendo": "Nintendo (3DS|Switch)",
10377
+ "Amoi": "Amoi",
10378
+ "INQ": "INQ",
10379
+ "OnePlus": "ONEPLUS",
10380
+ "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"
10381
+ },
10382
+ "tablets": {
10383
+ "iPad": "iPad|iPad.*Mobile",
10384
+ "NexusTablet": "Android.*Nexus[\\s]+(7|9|10)",
10385
+ "GoogleTablet": "Android.*Pixel C",
10386
+ "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",
10387
+ "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk\/[0-9.]+ like Chrome\/[0-9.]+ (?!Mobile)",
10388
+ "SurfaceTablet": "Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",
10389
+ "HPTablet": "HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",
10390
+ "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",
10391
+ "BlackBerryTablet": "PlayBook|RIM Tablet",
10392
+ "HTCtablet": "HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",
10393
+ "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",
10394
+ "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",
10395
+ "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",
10396
+ "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",
10397
+ "LGTablet": "\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",
10398
+ "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",
10399
+ "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",
10400
+ "LenovoTablet": "Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",
10401
+ "DellTablet": "Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",
10402
+ "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",
10403
+ "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",
10404
+ "ArnovaTablet": "97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",
10405
+ "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",
10406
+ "IRUTablet": "M702pro",
10407
+ "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",
10408
+ "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",
10409
+ "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",
10410
+ "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",
10411
+ "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",
10412
+ "NokiaLumiaTablet": "Lumia 2520",
10413
+ "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",
10414
+ "PhilipsTablet": "\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",
10415
+ "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",
10416
+ "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",
10417
+ "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",
10418
+ "MSITablet": "MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",
10419
+ "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",
10420
+ "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",
10421
+ "FlyTablet": "IQ310|Fly Vision",
10422
+ "bqTablet": "Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",
10423
+ "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",
10424
+ "NecTablet": "\\bN-06D|\\bN-08D",
10425
+ "PantechTablet": "Pantech.*P4100",
10426
+ "BronchoTablet": "Broncho.*(N701|N708|N802|a710)",
10427
+ "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",
10428
+ "ZyncTablet": "z1000|Z99 2G|z930|z990|z909|Z919|z900",
10429
+ "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA",
10430
+ "NabiTablet": "Android.*\\bNabi",
10431
+ "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",
10432
+ "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",
10433
+ "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",
10434
+ "PlaystationTablet": "Playstation.*(Portable|Vita)",
10435
+ "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",
10436
+ "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",
10437
+ "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",
10438
+ "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",
10439
+ "GalapadTablet": "Android [0-9.]+; [a-z-]+; \\bG1\\b",
10440
+ "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",
10441
+ "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",
10442
+ "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",
10443
+ "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",
10444
+ "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",
10445
+ "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",
10446
+ "GUTablet": "TX-A1301|TX-M9002|Q702|kf026",
10447
+ "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",
10448
+ "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",
10449
+ "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",
10450
+ "DPSTablet": "DPS Dream 9|DPS Dual 7",
10451
+ "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",
10452
+ "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",
10453
+ "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b",
10454
+ "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan",
10455
+ "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",
10456
+ "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",
10457
+ "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",
10458
+ "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1",
10459
+ "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",
10460
+ "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",
10461
+ "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",
10462
+ "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",
10463
+ "iMobileTablet": "i-mobile i-note",
10464
+ "TolinoTablet": "tolino tab [0-9.]+|tolino shine",
10465
+ "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b",
10466
+ "AMPETablet": "Android.* A78 ",
10467
+ "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)",
10468
+ "TecnoTablet": "TECNO P9|TECNO DP8D",
10469
+ "JXDTablet": "Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",
10470
+ "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",
10471
+ "FX2Tablet": "FX2 PAD7|FX2 PAD10",
10472
+ "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",
10473
+ "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",
10474
+ "VerizonTablet": "QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",
10475
+ "OdysTablet": "LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",
10476
+ "CaptivaTablet": "CAPTIVA PAD",
10477
+ "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",
10478
+ "TeclastTablet": "T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",
10479
+ "OndaTablet": "\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",
10480
+ "JaytechTablet": "TPC-PA762",
10481
+ "BlaupunktTablet": "Endeavour 800NG|Endeavour 1010",
10482
+ "DigmaTablet": "\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",
10483
+ "EvolioTablet": "ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",
10484
+ "LavaTablet": "QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",
10485
+ "AocTablet": "MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",
10486
+ "MpmanTablet": "MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",
10487
+ "CelkonTablet": "CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",
10488
+ "WolderTablet": "miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",
10489
+ "MediacomTablet": "M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",
10490
+ "MiTablet": "\\bMI PAD\\b|\\bHM NOTE 1W\\b",
10491
+ "NibiruTablet": "Nibiru M1|Nibiru Jupiter One",
10492
+ "NexoTablet": "NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",
10493
+ "LeaderTablet": "TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",
10494
+ "UbislateTablet": "UbiSlate[\\s]?7C",
10495
+ "PocketBookTablet": "Pocketbook",
10496
+ "KocasoTablet": "\\b(TB-1207)\\b",
10497
+ "HisenseTablet": "\\b(F5281|E2371)\\b",
10498
+ "Hudl": "Hudl HT7S3|Hudl 2",
10499
+ "TelstraTablet": "T-Hub2",
10500
+ "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"
10501
+ },
10502
+ "oss": {
10503
+ "AndroidOS": "Android",
10504
+ "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os",
10505
+ "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",
10506
+ "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",
10507
+ "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",
10508
+ "WindowsPhoneOS": "Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",
10509
+ "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",
10510
+ "iPadOS": "CPU OS 13",
10511
+ "SailfishOS": "Sailfish",
10512
+ "MeeGoOS": "MeeGo",
10513
+ "MaemoOS": "Maemo",
10514
+ "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b",
10515
+ "webOS": "webOS|hpwOS",
10516
+ "badaOS": "\\bBada\\b",
10517
+ "BREWOS": "BREW"
10518
+ },
10519
+ "uas": {
10520
+ "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?",
10521
+ "Dolfin": "\\bDolfin\\b",
10522
+ "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+$|Coast\/[0-9.]+",
10523
+ "Skyfire": "Skyfire",
10524
+ "Edge": "\\bEdgiOS\\b|Mobile Safari\/[.0-9]* Edge",
10525
+ "IE": "IEMobile|MSIEMobile",
10526
+ "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",
10527
+ "Bolt": "bolt",
10528
+ "TeaShark": "teashark",
10529
+ "Blazer": "Blazer",
10530
+ "Safari": "Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",
10531
+ "WeChat": "\\bMicroMessenger\\b",
10532
+ "UCBrowser": "UC.*Browser|UCWEB",
10533
+ "baiduboxapp": "baiduboxapp",
10534
+ "baidubrowser": "baidubrowser",
10535
+ "DiigoBrowser": "DiigoBrowser",
10536
+ "Mercury": "\\bMercury\\b",
10537
+ "ObigoBrowser": "Obigo",
10538
+ "NetFront": "NF-Browser",
10539
+ "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",
10540
+ "PaleMoon": "Android.*PaleMoon|Mobile.*PaleMoon"
10541
+ },
10542
+ "props": {
10543
+ "Mobile": "Mobile\/[VER]",
10544
+ "Build": "Build\/[VER]",
10545
+ "Version": "Version\/[VER]",
10546
+ "VendorID": "VendorID\/[VER]",
10547
+ "iPad": "iPad.*CPU[a-z ]+[VER]",
10548
+ "iPhone": "iPhone.*CPU[a-z ]+[VER]",
10549
+ "iPod": "iPod.*CPU[a-z ]+[VER]",
10550
+ "Kindle": "Kindle\/[VER]",
10551
+ "Chrome": [
10552
+ "Chrome\/[VER]",
10553
+ "CriOS\/[VER]",
10554
+ "CrMo\/[VER]"
10555
+ ],
10556
+ "Coast": [
10557
+ "Coast\/[VER]"
10558
+ ],
10559
+ "Dolfin": "Dolfin\/[VER]",
10560
+ "Firefox": [
10561
+ "Firefox\/[VER]",
10562
+ "FxiOS\/[VER]"
10563
+ ],
10564
+ "Fennec": "Fennec\/[VER]",
10565
+ "Edge": "Edge\/[VER]",
10566
+ "IE": [
10567
+ "IEMobile\/[VER];",
10568
+ "IEMobile [VER]",
10569
+ "MSIE [VER];",
10570
+ "Trident\/[0-9.]+;.*rv:[VER]"
10571
+ ],
10572
+ "NetFront": "NetFront\/[VER]",
10573
+ "NokiaBrowser": "NokiaBrowser\/[VER]",
10574
+ "Opera": [
10575
+ " OPR\/[VER]",
10576
+ "Opera Mini\/[VER]",
10577
+ "Version\/[VER]"
10578
+ ],
10579
+ "Opera Mini": "Opera Mini\/[VER]",
10580
+ "Opera Mobi": "Version\/[VER]",
10581
+ "UCBrowser": [
10582
+ "UCWEB[VER]",
10583
+ "UC.*Browser\/[VER]"
10584
+ ],
10585
+ "MQQBrowser": "MQQBrowser\/[VER]",
10586
+ "MicroMessenger": "MicroMessenger\/[VER]",
10587
+ "baiduboxapp": "baiduboxapp\/[VER]",
10588
+ "baidubrowser": "baidubrowser\/[VER]",
10589
+ "SamsungBrowser": "SamsungBrowser\/[VER]",
10590
+ "Iron": "Iron\/[VER]",
10591
+ "Safari": [
10592
+ "Version\/[VER]",
10593
+ "Safari\/[VER]"
10594
+ ],
10595
+ "Skyfire": "Skyfire\/[VER]",
10596
+ "Tizen": "Tizen\/[VER]",
10597
+ "Webkit": "webkit[ \/][VER]",
10598
+ "PaleMoon": "PaleMoon\/[VER]",
10599
+ "SailfishBrowser": "SailfishBrowser\/[VER]",
10600
+ "Gecko": "Gecko\/[VER]",
10601
+ "Trident": "Trident\/[VER]",
10602
+ "Presto": "Presto\/[VER]",
10603
+ "Goanna": "Goanna\/[VER]",
10604
+ "iOS": " \\bi?OS\\b [VER][ ;]{1}",
10605
+ "Android": "Android [VER]",
10606
+ "Sailfish": "Sailfish [VER]",
10607
+ "BlackBerry": [
10608
+ "BlackBerry[\\w]+\/[VER]",
10609
+ "BlackBerry.*Version\/[VER]",
10610
+ "Version\/[VER]"
10611
+ ],
10612
+ "BREW": "BREW [VER]",
10613
+ "Java": "Java\/[VER]",
10614
+ "Windows Phone OS": [
10615
+ "Windows Phone OS [VER]",
10616
+ "Windows Phone [VER]"
10617
+ ],
10618
+ "Windows Phone": "Windows Phone [VER]",
10619
+ "Windows CE": "Windows CE\/[VER]",
10620
+ "Windows NT": "Windows NT [VER]",
10621
+ "Symbian": [
10622
+ "SymbianOS\/[VER]",
10623
+ "Symbian\/[VER]"
10624
+ ],
10625
+ "webOS": [
10626
+ "webOS\/[VER]",
10627
+ "hpwOS\/[VER];"
10628
+ ]
10629
+ },
10630
+ "utils": {
10631
+ "Bot": "Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",
10632
+ "MobileBot": "Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2",
10633
+ "DesktopMode": "WPDesktop",
10634
+ "TV": "SonyDTV|HbbTV",
10635
+ "WebKit": "(webkit)[ \/]([\\w.]+)",
10636
+ "Console": "\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",
10637
+ "Watch": "SM-V700"
10638
+ }
10639
+ };
10640
+
10641
+ // following patterns come from http://detectmobilebrowsers.com/
10642
+ impl.detectMobileBrowsers = {
10643
+ fullPattern: /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,
10644
+ shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,
10645
+ tabletPattern: /android|ipad|playbook|silk/i
10646
+ };
10647
+
10648
+ var hasOwnProp = Object.prototype.hasOwnProperty,
10649
+ isArray;
10650
+
10651
+ impl.FALLBACK_PHONE = 'UnknownPhone';
10652
+ impl.FALLBACK_TABLET = 'UnknownTablet';
10653
+ impl.FALLBACK_MOBILE = 'UnknownMobile';
10654
+
10655
+ isArray = ('isArray' in Array) ?
10656
+ Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; };
10657
+
10658
+ function equalIC(a, b) {
10659
+ return a != null && b != null && a.toLowerCase() === b.toLowerCase();
10660
+ }
10661
+
10662
+ function containsIC(array, value) {
10663
+ var valueLC, i, len = array.length;
10664
+ if (!len || !value) {
10665
+ return false;
10666
+ }
10667
+ valueLC = value.toLowerCase();
10668
+ for (i = 0; i < len; ++i) {
10669
+ if (valueLC === array[i].toLowerCase()) {
10670
+ return true;
10671
+ }
10672
+ }
10673
+ return false;
10674
+ }
10675
+
10676
+ function convertPropsToRegExp(object) {
10677
+ for (var key in object) {
10678
+ if (hasOwnProp.call(object, key)) {
10679
+ object[key] = new RegExp(object[key], 'i');
10680
+ }
10681
+ }
10682
+ }
10683
+
10684
+ function prepareUserAgent(userAgent) {
10685
+ return (userAgent || '').substr(0, 500); // mitigate vulnerable to ReDoS
10686
+ }
10687
+
10688
+ (function init() {
10689
+ var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules;
10690
+ for (key in mobileDetectRules.props) {
10691
+ if (hasOwnProp.call(mobileDetectRules.props, key)) {
10692
+ values = mobileDetectRules.props[key];
10693
+ if (!isArray(values)) {
10694
+ values = [values];
10695
+ }
10696
+ len = values.length;
10697
+ for (i = 0; i < len; ++i) {
10698
+ value = values[i];
10699
+ verPos = value.indexOf('[VER]');
10700
+ if (verPos >= 0) {
10701
+ value = value.substring(0, verPos) + '([\\w._\\+]+)' + value.substring(verPos + 5);
10702
+ }
10703
+ values[i] = new RegExp(value, 'i');
10704
+ }
10705
+ mobileDetectRules.props[key] = values;
10706
+ }
10707
+ }
10708
+ convertPropsToRegExp(mobileDetectRules.oss);
10709
+ convertPropsToRegExp(mobileDetectRules.phones);
10710
+ convertPropsToRegExp(mobileDetectRules.tablets);
10711
+ convertPropsToRegExp(mobileDetectRules.uas);
10712
+ convertPropsToRegExp(mobileDetectRules.utils);
10713
+
10714
+ // copy some patterns to oss0 which are tested first (see issue#15)
10715
+ mobileDetectRules.oss0 = {
10716
+ WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS,
10717
+ WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS
10718
+ };
10719
+ }());
10720
+
10721
+ /**
10722
+ * Test userAgent string against a set of rules and find the first matched key.
10723
+ * @param {Object} rules (key is String, value is RegExp)
10724
+ * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').
10725
+ * @returns {String|null} the matched key if found, otherwise <tt>null</tt>
10726
+ * @private
10727
+ */
10728
+ impl.findMatch = function(rules, userAgent) {
10729
+ for (var key in rules) {
10730
+ if (hasOwnProp.call(rules, key)) {
10731
+ if (rules[key].test(userAgent)) {
10732
+ return key;
10733
+ }
10734
+ }
10735
+ }
10736
+ return null;
10737
+ };
10738
+
10739
+ /**
10740
+ * Test userAgent string against a set of rules and return an array of matched keys.
10741
+ * @param {Object} rules (key is String, value is RegExp)
10742
+ * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').
10743
+ * @returns {Array} an array of matched keys, may be empty when there is no match, but not <tt>null</tt>
10744
+ * @private
10745
+ */
10746
+ impl.findMatches = function(rules, userAgent) {
10747
+ var result = [];
10748
+ for (var key in rules) {
10749
+ if (hasOwnProp.call(rules, key)) {
10750
+ if (rules[key].test(userAgent)) {
10751
+ result.push(key);
10752
+ }
10753
+ }
10754
+ }
10755
+ return result;
10756
+ };
10757
+
10758
+ /**
10759
+ * Check the version of the given property in the User-Agent.
10760
+ *
10761
+ * @param {String} propertyName
10762
+ * @param {String} userAgent
10763
+ * @return {String} version or <tt>null</tt> if version not found
10764
+ * @private
10765
+ */
10766
+ impl.getVersionStr = function (propertyName, userAgent) {
10767
+ var props = impl.mobileDetectRules.props, patterns, i, len, match;
10768
+ if (hasOwnProp.call(props, propertyName)) {
10769
+ patterns = props[propertyName];
10770
+ len = patterns.length;
10771
+ for (i = 0; i < len; ++i) {
10772
+ match = patterns[i].exec(userAgent);
10773
+ if (match !== null) {
10774
+ return match[1];
10775
+ }
10776
+ }
10777
+ }
10778
+ return null;
10779
+ };
10780
+
10781
+ /**
10782
+ * Check the version of the given property in the User-Agent.
10783
+ * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)
10784
+ *
10785
+ * @param {String} propertyName
10786
+ * @param {String} userAgent
10787
+ * @return {Number} version or <tt>NaN</tt> if version not found
10788
+ * @private
10789
+ */
10790
+ impl.getVersion = function (propertyName, userAgent) {
10791
+ var version = impl.getVersionStr(propertyName, userAgent);
10792
+ return version ? impl.prepareVersionNo(version) : NaN;
10793
+ };
10794
+
10795
+ /**
10796
+ * Prepare the version number.
10797
+ *
10798
+ * @param {String} version
10799
+ * @return {Number} the version number as a floating number
10800
+ * @private
10801
+ */
10802
+ impl.prepareVersionNo = function (version) {
10803
+ var numbers;
10804
+
10805
+ numbers = version.split(/[a-z._ \/\-]/i);
10806
+ if (numbers.length === 1) {
10807
+ version = numbers[0];
10808
+ }
10809
+ if (numbers.length > 1) {
10810
+ version = numbers[0] + '.';
10811
+ numbers.shift();
10812
+ version += numbers.join('');
10813
+ }
10814
+ return Number(version);
10815
+ };
10816
+
10817
+ impl.isMobileFallback = function (userAgent) {
10818
+ return impl.detectMobileBrowsers.fullPattern.test(userAgent) ||
10819
+ impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4));
10820
+ };
10821
+
10822
+ impl.isTabletFallback = function (userAgent) {
10823
+ return impl.detectMobileBrowsers.tabletPattern.test(userAgent);
10824
+ };
10825
+
10826
+ impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) {
10827
+ if (cache.mobile !== undefined) {
10828
+ return;
10829
+ }
10830
+ var phone, tablet, phoneSized;
10831
+
10832
+ // first check for stronger tablet rules, then phone (see issue#5)
10833
+ tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent);
10834
+ if (tablet) {
10835
+ cache.mobile = cache.tablet = tablet;
10836
+ cache.phone = null;
10837
+ return; // unambiguously identified as tablet
10838
+ }
10839
+
10840
+ phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent);
10841
+ if (phone) {
10842
+ cache.mobile = cache.phone = phone;
10843
+ cache.tablet = null;
10844
+ return; // unambiguously identified as phone
10845
+ }
10846
+
10847
+ // our rules haven't found a match -> try more general fallback rules
10848
+ if (impl.isMobileFallback(userAgent)) {
10849
+ phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth);
10850
+ if (phoneSized === undefined) {
10851
+ cache.mobile = impl.FALLBACK_MOBILE;
10852
+ cache.tablet = cache.phone = null;
10853
+ } else if (phoneSized) {
10854
+ cache.mobile = cache.phone = impl.FALLBACK_PHONE;
10855
+ cache.tablet = null;
10856
+ } else {
10857
+ cache.mobile = cache.tablet = impl.FALLBACK_TABLET;
10858
+ cache.phone = null;
10859
+ }
10860
+ } else if (impl.isTabletFallback(userAgent)) {
10861
+ cache.mobile = cache.tablet = impl.FALLBACK_TABLET;
10862
+ cache.phone = null;
10863
+ } else {
10864
+ // not mobile at all!
10865
+ cache.mobile = cache.tablet = cache.phone = null;
10866
+ }
10867
+ };
10868
+
10869
+ // t is a reference to a MobileDetect instance
10870
+ impl.mobileGrade = function (t) {
10871
+ // impl note:
10872
+ // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version.
10873
+ // When changes are made in Mobile_Detect.php, copy this method and replace:
10874
+ // $this-> / t.
10875
+ // self::MOBILE_GRADE_(.) / '$1'
10876
+ // , self::VERSION_TYPE_FLOAT / (nothing)
10877
+ // isIOS() / os('iOS')
10878
+ // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE
10879
+ var $isMobile = t.mobile() !== null;
10880
+
10881
+ if (
10882
+ // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1)
10883
+ t.os('iOS') && t.version('iPad')>=4.3 ||
10884
+ t.os('iOS') && t.version('iPhone')>=3.1 ||
10885
+ t.os('iOS') && t.version('iPod')>=3.1 ||
10886
+
10887
+ // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)
10888
+ // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM
10889
+ // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices
10890
+ // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7
10891
+ ( t.version('Android')>2.1 && t.is('Webkit') ) ||
10892
+
10893
+ // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800
10894
+ t.version('Windows Phone OS')>=7.0 ||
10895
+
10896
+ // Blackberry 7 - Tested on BlackBerry Torch 9810
10897
+ // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670
10898
+ t.is('BlackBerry') && t.version('BlackBerry')>=6.0 ||
10899
+ // Blackberry Playbook (1.0-2.0) - Tested on PlayBook
10900
+ t.match('Playbook.*Tablet') ||
10901
+
10902
+ // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0)
10903
+ ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) ||
10904
+ // Palm WebOS 3.0 - Tested on HP TouchPad
10905
+ t.match('hp.*TouchPad') ||
10906
+
10907
+ // Firefox Mobile (12 Beta) - Tested on Android 2.3 device
10908
+ ( t.is('Firefox') && t.version('Firefox')>=12 ) ||
10909
+
10910
+ // Chrome for Android - Tested on Android 4.0, 4.1 device
10911
+ ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) ||
10912
+
10913
+ // Skyfire 4.1 - Tested on Android 2.3 device
10914
+ ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) ||
10915
+
10916
+ // Opera Mobile 11.5-12: Tested on Android 2.3
10917
+ ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) ||
10918
+
10919
+ // Meego 1.2 - Tested on Nokia 950 and N9
10920
+ t.is('MeeGoOS') ||
10921
+
10922
+ // Tizen (pre-release) - Tested on early hardware
10923
+ t.is('Tizen') ||
10924
+
10925
+ // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser
10926
+ // @todo: more tests here!
10927
+ t.is('Dolfin') && t.version('Bada')>=2.0 ||
10928
+
10929
+ // UC Browser - Tested on Android 2.3 device
10930
+ ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) ||
10931
+
10932
+ // Kindle 3 and Fire - Tested on the built-in WebKit browser for each
10933
+ ( t.match('Kindle Fire') ||
10934
+ t.is('Kindle') && t.version('Kindle')>=3.0 ) ||
10935
+
10936
+ // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet
10937
+ t.is('AndroidOS') && t.is('NookTablet') ||
10938
+
10939
+ // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7
10940
+ t.version('Chrome')>=11 && !$isMobile ||
10941
+
10942
+ // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7
10943
+ t.version('Safari')>=5.0 && !$isMobile ||
10944
+
10945
+ // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7
10946
+ t.version('Firefox')>=4.0 && !$isMobile ||
10947
+
10948
+ // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7
10949
+ t.version('MSIE')>=7.0 && !$isMobile ||
10950
+
10951
+ // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7
10952
+ // @reference: http://my.opera.com/community/openweb/idopera/
10953
+ t.version('Opera')>=10 && !$isMobile
10954
+
10955
+ ){
10956
+ return 'A';
10957
+ }
10958
+
10959
+ if (
10960
+ t.os('iOS') && t.version('iPad')<4.3 ||
10961
+ t.os('iOS') && t.version('iPhone')<3.1 ||
10962
+ t.os('iOS') && t.version('iPod')<3.1 ||
10963
+
10964
+ // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770
10965
+ t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 ||
10966
+
10967
+ //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3
10968
+ ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 &&
10969
+ (t.version('Android')>=2.3 || t.is('iOS')) ) ||
10970
+
10971
+ // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)
10972
+ t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||
10973
+
10974
+ // @todo: report this (tested on Nokia N71)
10975
+ t.version('Opera Mobi')>=11 && t.is('SymbianOS')
10976
+ ){
10977
+ return 'B';
10978
+ }
10979
+
10980
+ if (
10981
+ // Blackberry 4.x - Tested on the Curve 8330
10982
+ t.version('BlackBerry')<5.0 ||
10983
+ // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)
10984
+ t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2
10985
+
10986
+ ){
10987
+ return 'C';
10988
+ }
10989
+
10990
+ //All older smartphone platforms and featurephones - Any device that doesn't support media queries
10991
+ //will receive the basic, C grade experience.
10992
+ return 'C';
10993
+ };
10994
+
10995
+ impl.detectOS = function (ua) {
10996
+ return impl.findMatch(impl.mobileDetectRules.oss0, ua) ||
10997
+ impl.findMatch(impl.mobileDetectRules.oss, ua);
10998
+ };
10999
+
11000
+ impl.getDeviceSmallerSide = function () {
11001
+ return window.screen.width < window.screen.height ?
11002
+ window.screen.width :
11003
+ window.screen.height;
11004
+ };
11005
+
11006
+ /**
11007
+ * Constructor for MobileDetect object.
11008
+ * <br>
11009
+ * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.<br>
11010
+ * <div style="background-color: #d9edf7; border: 1px solid #bce8f1; color: #3a87ad; padding: 14px; border-radius: 2px; margin-top: 20px">
11011
+ * <strong>Find information how to download and install:</strong>
11012
+ * <a href="https://github.com/hgoebl/mobile-detect.js/">github.com/hgoebl/mobile-detect.js/</a>
11013
+ * </div>
11014
+ *
11015
+ * @example <pre>
11016
+ * var md = new MobileDetect(window.navigator.userAgent);
11017
+ * if (md.mobile()) {
11018
+ * location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';
11019
+ * }
11020
+ * </pre>
11021
+ *
11022
+ * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent']
11023
+ * @param {number} [maxPhoneWidth=600] <strong>only for browsers</strong> specify a value for the maximum
11024
+ * width of smallest device side (in logical "CSS" pixels) until a device detected as mobile will be handled
11025
+ * as phone.
11026
+ * This is only used in cases where the device cannot be classified as phone or tablet.<br>
11027
+ * See <a href="http://developer.android.com/guide/practices/screens_support.html">Declaring Tablet Layouts
11028
+ * for Android</a>.<br>
11029
+ * If you provide a value < 0, then this "fuzzy" check is disabled.
11030
+ * @constructor
11031
+ * @global
11032
+ */
11033
+ function MobileDetect(userAgent, maxPhoneWidth) {
11034
+ this.ua = prepareUserAgent(userAgent);
11035
+ this._cache = {};
11036
+ //600dp is typical 7" tablet minimum width
11037
+ this.maxPhoneWidth = maxPhoneWidth || 600;
11038
+ }
11039
+
11040
+ MobileDetect.prototype = {
11041
+ constructor: MobileDetect,
11042
+
11043
+ /**
11044
+ * Returns the detected phone or tablet type or <tt>null</tt> if it is not a mobile device.
11045
+ * <br>
11046
+ * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.<br>
11047
+ * <br>
11048
+ * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against
11049
+ * the patterns of <a href="http://detectmobilebrowsers.com/">detectmobilebrowsers.com</a>. If this test
11050
+ * is positive, a value of <code>UnknownPhone</code>, <code>UnknownTablet</code> or
11051
+ * <code>UnknownMobile</code> is returned.<br>
11052
+ * When used in browser, the decision whether phone or tablet is made based on <code>screen.width/height</code>.<br>
11053
+ * <br>
11054
+ * When used server-side (node.js), there is no way to tell the difference between <code>UnknownTablet</code>
11055
+ * and <code>UnknownMobile</code>, so you will get <code>UnknownMobile</code> here.<br>
11056
+ * Be aware that since v1.0.0 in this special case you will get <code>UnknownMobile</code> only for:
11057
+ * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
11058
+ * In versions before v1.0.0 all 3 methods returned <code>UnknownMobile</code> which was tedious to use.
11059
+ * <br>
11060
+ * In most cases you will use the return value just as a boolean.
11061
+ *
11062
+ * @returns {String} the key for the phone family or tablet family, e.g. "Nexus".
11063
+ * @function MobileDetect#mobile
11064
+ */
11065
+ mobile: function () {
11066
+ impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);
11067
+ return this._cache.mobile;
11068
+ },
11069
+
11070
+ /**
11071
+ * Returns the detected phone type/family string or <tt>null</tt>.
11072
+ * <br>
11073
+ * The returned tablet (family or producer) is one of following keys:<br>
11074
+ * <br><tt>iPhone, BlackBerry, Pixel, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus,
11075
+ * Xiaomi, NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile,
11076
+ * SimValley, Wolfgang, Alcatel, Nintendo, Amoi, INQ, OnePlus, GenericPhone</tt><br>
11077
+ * <br>
11078
+ * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against
11079
+ * the patterns of <a href="http://detectmobilebrowsers.com/">detectmobilebrowsers.com</a>. If this test
11080
+ * is positive, a value of <code>UnknownPhone</code> or <code>UnknownMobile</code> is returned.<br>
11081
+ * When used in browser, the decision whether phone or tablet is made based on <code>screen.width/height</code>.<br>
11082
+ * <br>
11083
+ * When used server-side (node.js), there is no way to tell the difference between <code>UnknownTablet</code>
11084
+ * and <code>UnknownMobile</code>, so you will get <code>null</code> here, while {@link MobileDetect#mobile}
11085
+ * will return <code>UnknownMobile</code>.<br>
11086
+ * Be aware that since v1.0.0 in this special case you will get <code>UnknownMobile</code> only for:
11087
+ * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
11088
+ * In versions before v1.0.0 all 3 methods returned <code>UnknownMobile</code> which was tedious to use.
11089
+ * <br>
11090
+ * In most cases you will use the return value just as a boolean.
11091
+ *
11092
+ * @returns {String} the key of the phone family or producer, e.g. "iPhone"
11093
+ * @function MobileDetect#phone
11094
+ */
11095
+ phone: function () {
11096
+ impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);
11097
+ return this._cache.phone;
11098
+ },
11099
+
11100
+ /**
11101
+ * Returns the detected tablet type/family string or <tt>null</tt>.
11102
+ * <br>
11103
+ * The returned tablet (family or producer) is one of following keys:<br>
11104
+ * <br><tt>iPad, NexusTablet, GoogleTablet, SamsungTablet, Kindle, SurfaceTablet,
11105
+ * HPTablet, AsusTablet, BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet,
11106
+ * AcerTablet, ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet,
11107
+ * LenovoTablet, DellTablet, YarvikTablet, MedionTablet, ArnovaTablet,
11108
+ * IntensoTablet, IRUTablet, MegafonTablet, EbodaTablet, AllViewTablet,
11109
+ * ArchosTablet, AinolTablet, NokiaLumiaTablet, SonyTablet, PhilipsTablet,
11110
+ * CubeTablet, CobyTablet, MIDTablet, MSITablet, SMiTTablet, RockChipTablet,
11111
+ * FlyTablet, bqTablet, HuaweiTablet, NecTablet, PantechTablet, BronchoTablet,
11112
+ * VersusTablet, ZyncTablet, PositivoTablet, NabiTablet, KoboTablet, DanewTablet,
11113
+ * TexetTablet, PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet,
11114
+ * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet,
11115
+ * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet,
11116
+ * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet,
11117
+ * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet,
11118
+ * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet,
11119
+ * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet,
11120
+ * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet,
11121
+ * VerizonTablet, OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet,
11122
+ * OndaTablet, JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet,
11123
+ * LavaTablet, AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MediacomTablet,
11124
+ * MiTablet, NibiruTablet, NexoTablet, LeaderTablet, UbislateTablet,
11125
+ * PocketBookTablet, KocasoTablet, HisenseTablet, Hudl, TelstraTablet,
11126
+ * GenericTablet</tt><br>
11127
+ * <br>
11128
+ * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against
11129
+ * the patterns of <a href="http://detectmobilebrowsers.com/">detectmobilebrowsers.com</a>. If this test
11130
+ * is positive, a value of <code>UnknownTablet</code> or <code>UnknownMobile</code> is returned.<br>
11131
+ * When used in browser, the decision whether phone or tablet is made based on <code>screen.width/height</code>.<br>
11132
+ * <br>
11133
+ * When used server-side (node.js), there is no way to tell the difference between <code>UnknownTablet</code>
11134
+ * and <code>UnknownMobile</code>, so you will get <code>null</code> here, while {@link MobileDetect#mobile}
11135
+ * will return <code>UnknownMobile</code>.<br>
11136
+ * Be aware that since v1.0.0 in this special case you will get <code>UnknownMobile</code> only for:
11137
+ * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
11138
+ * In versions before v1.0.0 all 3 methods returned <code>UnknownMobile</code> which was tedious to use.
11139
+ * <br>
11140
+ * In most cases you will use the return value just as a boolean.
11141
+ *
11142
+ * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet"
11143
+ * @function MobileDetect#tablet
11144
+ */
11145
+ tablet: function () {
11146
+ impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);
11147
+ return this._cache.tablet;
11148
+ },
11149
+
11150
+ /**
11151
+ * Returns the (first) detected user-agent string or <tt>null</tt>.
11152
+ * <br>
11153
+ * The returned user-agent is one of following keys:<br>
11154
+ * <br><tt>Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,
11155
+ * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,
11156
+ * ObigoBrowser, NetFront, GenericBrowser, PaleMoon</tt><br>
11157
+ * <br>
11158
+ * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare
11159
+ * cases where a mobile device pretends to be more than one particular browser. You can get the
11160
+ * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by
11161
+ * providing one of the defined keys as first argument to {@link MobileDetect#is}.
11162
+ *
11163
+ * @returns {String} the key for the detected user-agent or <tt>null</tt>
11164
+ * @function MobileDetect#userAgent
11165
+ */
11166
+ userAgent: function () {
11167
+ if (this._cache.userAgent === undefined) {
11168
+ this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua);
11169
+ }
11170
+ return this._cache.userAgent;
11171
+ },
11172
+
11173
+ /**
11174
+ * Returns all detected user-agent strings.
11175
+ * <br>
11176
+ * The array is empty or contains one or more of following keys:<br>
11177
+ * <br><tt>Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,
11178
+ * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,
11179
+ * ObigoBrowser, NetFront, GenericBrowser, PaleMoon</tt><br>
11180
+ * <br>
11181
+ * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare
11182
+ * cases where a mobile device pretends to be more than one particular browser. You can get the
11183
+ * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by
11184
+ * providing one of the defined keys as first argument to {@link MobileDetect#is}.
11185
+ *
11186
+ * @returns {Array} the array of detected user-agent keys or <tt>[]</tt>
11187
+ * @function MobileDetect#userAgents
11188
+ */
11189
+ userAgents: function () {
11190
+ if (this._cache.userAgents === undefined) {
11191
+ this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua);
11192
+ }
11193
+ return this._cache.userAgents;
11194
+ },
11195
+
11196
+ /**
11197
+ * Returns the detected operating system string or <tt>null</tt>.
11198
+ * <br>
11199
+ * The operating system is one of following keys:<br>
11200
+ * <br><tt>AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS,
11201
+ * iOS, iPadOS, SailfishOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS</tt><br>
11202
+ *
11203
+ * @returns {String} the key for the detected operating system.
11204
+ * @function MobileDetect#os
11205
+ */
11206
+ os: function () {
11207
+ if (this._cache.os === undefined) {
11208
+ this._cache.os = impl.detectOS(this.ua);
11209
+ }
11210
+ return this._cache.os;
11211
+ },
11212
+
11213
+ /**
11214
+ * Get the version (as Number) of the given property in the User-Agent.
11215
+ * <br>
11216
+ * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)
11217
+ *
11218
+ * @param {String} key a key defining a thing which has a version.<br>
11219
+ * You can use one of following keys:<br>
11220
+ * <br><tt>Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,
11221
+ * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,
11222
+ * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,
11223
+ * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon,
11224
+ * SailfishBrowser, Gecko, Trident, Presto, Goanna, iOS, Android, Sailfish,
11225
+ * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows
11226
+ * NT, Symbian, webOS</tt><br>
11227
+ *
11228
+ * @returns {Number} the version as float or <tt>NaN</tt> if User-Agent doesn't contain this version.
11229
+ * Be careful when comparing this value with '==' operator!
11230
+ * @function MobileDetect#version
11231
+ */
11232
+ version: function (key) {
11233
+ return impl.getVersion(key, this.ua);
11234
+ },
11235
+
11236
+ /**
11237
+ * Get the version (as String) of the given property in the User-Agent.
11238
+ * <br>
11239
+ *
11240
+ * @param {String} key a key defining a thing which has a version.<br>
11241
+ * You can use one of following keys:<br>
11242
+ * <br><tt>Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,
11243
+ * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,
11244
+ * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,
11245
+ * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon,
11246
+ * SailfishBrowser, Gecko, Trident, Presto, Goanna, iOS, Android, Sailfish,
11247
+ * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows
11248
+ * NT, Symbian, webOS</tt><br>
11249
+ *
11250
+ * @returns {String} the "raw" version as String or <tt>null</tt> if User-Agent doesn't contain this version.
11251
+ *
11252
+ * @function MobileDetect#versionStr
11253
+ */
11254
+ versionStr: function (key) {
11255
+ return impl.getVersionStr(key, this.ua);
11256
+ },
11257
+
11258
+ /**
11259
+ * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string.
11260
+ *
11261
+ * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or
11262
+ * tablet family.<br>
11263
+ * For a complete list of possible values, see {@link MobileDetect#userAgent},
11264
+ * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.<br>
11265
+ * Additionally you have following keys:<br>
11266
+ * <br><tt>Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch</tt><br>
11267
+ *
11268
+ * @returns {boolean} <tt>true</tt> when the given key is one of the defined keys of userAgent, os, phone,
11269
+ * tablet or one of the listed additional keys, otherwise <tt>false</tt>
11270
+ * @function MobileDetect#is
11271
+ */
11272
+ is: function (key) {
11273
+ return containsIC(this.userAgents(), key) ||
11274
+ equalIC(key, this.os()) ||
11275
+ equalIC(key, this.phone()) ||
11276
+ equalIC(key, this.tablet()) ||
11277
+ containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key);
11278
+ },
11279
+
11280
+ /**
11281
+ * Do a quick test against navigator::userAgent.
11282
+ *
11283
+ * @param {String|RegExp} pattern the pattern, either as String or RegExp
11284
+ * (a string will be converted to a case-insensitive RegExp).
11285
+ * @returns {boolean} <tt>true</tt> when the pattern matches, otherwise <tt>false</tt>
11286
+ * @function MobileDetect#match
11287
+ */
11288
+ match: function (pattern) {
11289
+ if (!(pattern instanceof RegExp)) {
11290
+ pattern = new RegExp(pattern, 'i');
11291
+ }
11292
+ return pattern.test(this.ua);
11293
+ },
11294
+
11295
+ /**
11296
+ * Checks whether the mobile device can be considered as phone regarding <code>screen.width</code>.
11297
+ * <br>
11298
+ * Obviously this method makes sense in browser environments only (not for Node.js)!
11299
+ * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.<br>
11300
+ * The argument is optional and if not present or falsy, the value of the constructor is taken.
11301
+ * @returns {boolean|undefined} <code>undefined</code> if screen size wasn't detectable, else <code>true</code>
11302
+ * when screen.width is less or equal to maxPhoneWidth, otherwise <code>false</code>.<br>
11303
+ * Will always return <code>undefined</code> server-side.
11304
+ */
11305
+ isPhoneSized: function (maxPhoneWidth) {
11306
+ return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth);
11307
+ },
11308
+
11309
+ /**
11310
+ * Returns the mobile grade ('A', 'B', 'C').
11311
+ *
11312
+ * @returns {String} one of the mobile grades ('A', 'B', 'C').
11313
+ * @function MobileDetect#mobileGrade
11314
+ */
11315
+ mobileGrade: function () {
11316
+ if (this._cache.grade === undefined) {
11317
+ this._cache.grade = impl.mobileGrade(this);
11318
+ }
11319
+ return this._cache.grade;
11320
+ }
11321
+ };
11322
+
11323
+ // environment-dependent
11324
+ if (typeof window !== 'undefined' && window.screen) {
11325
+ MobileDetect.isPhoneSized = function (maxPhoneWidth) {
11326
+ return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth;
11327
+ };
11328
+ } else {
11329
+ MobileDetect.isPhoneSized = function () {};
11330
+ }
11331
+
11332
+ // should not be replaced by a completely new object - just overwrite existing methods
11333
+ MobileDetect._impl = impl;
11334
+
11335
+ MobileDetect.version = '1.4.5 2021-03-13';
11336
+
11337
+ return MobileDetect;
11338
+ }); // end of call of define()
11339
+ })((function (undefined) {
11340
+ if ( true && module.exports) {
11341
+ return function (factory) { module.exports = factory(); };
11342
+ } else if (true) {
11343
+ return __webpack_require__.amdD;
11344
+ } else {}
11345
+ })());
11346
+
11347
+ /***/ }),
11348
+
10337
11349
  /***/ 6659:
10338
11350
  /***/ (function(module) {
10339
11351
 
@@ -10664,6 +11676,13 @@ module.exports = require("vue");
10664
11676
  /******/ }
10665
11677
  /******/
10666
11678
  /************************************************************************/
11679
+ /******/ /* webpack/runtime/amd define */
11680
+ /******/ !function() {
11681
+ /******/ __webpack_require__.amdD = function () {
11682
+ /******/ throw new Error('define cannot be used indirect');
11683
+ /******/ };
11684
+ /******/ }();
11685
+ /******/
10667
11686
  /******/ /* webpack/runtime/compat get default export */
10668
11687
  /******/ !function() {
10669
11688
  /******/ // getDefaultExport function for compatibility with non-harmony modules
@@ -11008,7 +12027,7 @@ var web_url_search_params_size = __webpack_require__(2062);
11008
12027
  // import {postWeb} from "./http.js";
11009
12028
  // import helper from "./helper";
11010
12029
 
11011
-
12030
+ let MobileDetect = __webpack_require__(2437);
11012
12031
  /**
11013
12032
  * 字典排序
11014
12033
  * @param <Object> dict
@@ -11819,7 +12838,46 @@ function getVueVersion() {
11819
12838
  version = Vue.version || 'undefined';
11820
12839
  return version;
11821
12840
  }
12841
+ function getDeviceEnv() {
12842
+ function isIpad() {
12843
+ var ua = window.navigator.userAgent;
12844
+ var IsIPad = false;
12845
+ if (/ipad/i.test(ua)) {
12846
+ IsIPad = true;
12847
+ }
12848
+ // iPad from IOS13
12849
+ var macApp = ua.match(/Macintosh/i) != null;
12850
+ if (macApp) {
12851
+ // need to distinguish between Macbook and iPad
12852
+ var canvas = document.createElement('canvas');
12853
+ if (canvas != null) {
12854
+ var context = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
12855
+ if (context) {
12856
+ var info = context.getExtension('WEBGL_debug_renderer_info');
12857
+ if (info) {
12858
+ var renderer = context.getParameter(info.UNMASKED_RENDERER_WEBGL);
12859
+ if (renderer.indexOf('Apple') != -1) IsIPad = true;
12860
+ }
12861
+ }
12862
+ }
12863
+ }
12864
+ return IsIPad;
12865
+ }
12866
+ let env = '';
12867
+ let md = new MobileDetect(window.navigator.userAgent); //初始化mobile-detect
12868
+ let os = md.os(); //获取系统
12869
+ if (os) {
12870
+ os = os.toLowerCase();
12871
+ }
12872
+ if (os === 'ios' || os === 'androidos' || isIpad()) {
12873
+ env = 'mobile';
12874
+ } else {
12875
+ env = 'pc';
12876
+ }
12877
+ return env;
12878
+ }
11822
12879
  /* harmony default export */ var js_fun = ({
12880
+ getDeviceEnv,
11823
12881
  getVueVersion,
11824
12882
  getToken,
11825
12883
  getQueryVariable,
@@ -13121,109 +14179,109 @@ let filerRegs = [{
13121
14179
  const Question_FillBlank_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Question_FillBlankvue_type_script_lang_js, [['render',Question_FillBlankvue_type_template_id_c4c14c5a_render]])
13122
14180
 
13123
14181
  /* harmony default export */ var Question_FillBlank = (Question_FillBlank_exports_);
13124
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/questions/Question_Programming.vue?vue&type=template&id=f33b5d50
14182
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/questions/Question_Programming.vue?vue&type=template&id=66006ba2
13125
14183
 
13126
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_1 = {
14184
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_1 = {
13127
14185
  class: "zykjcommon-question"
13128
14186
  };
13129
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_2 = {
14187
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_2 = {
13130
14188
  key: 0,
13131
14189
  class: "question-type"
13132
14190
  };
13133
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_3 = {
14191
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_3 = {
13134
14192
  key: 0
13135
14193
  };
13136
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_4 = {
14194
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_4 = {
13137
14195
  key: 1,
13138
14196
  class: "score fr"
13139
14197
  };
13140
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_5 = {
14198
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_5 = {
13141
14199
  class: "question-box"
13142
14200
  };
13143
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_6 = ["innerHTML"];
13144
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_7 = {
14201
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_6 = ["innerHTML"];
14202
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_7 = {
13145
14203
  key: 1,
13146
14204
  class: "question-analysis"
13147
14205
  };
13148
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_8 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
14206
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_8 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13149
14207
  class: "triangle-top"
13150
14208
  }, null, -1);
13151
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_9 = {
14209
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_9 = {
13152
14210
  class: "question-analysis-item"
13153
14211
  };
13154
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_10 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
14212
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_10 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
13155
14213
  class: "txt"
13156
14214
  }, "【你的答案】:", -1);
13157
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_11 = ["src"];
13158
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_12 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
14215
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_11 = ["src"];
14216
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_12 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13159
14217
  class: "mask-text-box"
13160
14218
  }, [/*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13161
14219
  class: "mask"
13162
14220
  }), /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13163
14221
  class: "mask-text"
13164
14222
  }, "去修改")], -1);
13165
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_13 = {
14223
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_13 = {
13166
14224
  key: 2,
13167
14225
  class: "question-analysis"
13168
14226
  };
13169
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_14 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
14227
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_14 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13170
14228
  class: "triangle-top"
13171
14229
  }, null, -1);
13172
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_15 = {
14230
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_15 = {
13173
14231
  class: "question-analysis-item"
13174
14232
  };
13175
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_16 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
14233
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_16 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
13176
14234
  class: "txt"
13177
14235
  }, "【你的答案】:", -1);
13178
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_17 = ["src"];
13179
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_18 = {
14236
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_17 = ["src"];
14237
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_18 = {
13180
14238
  class: "question-analysis-item"
13181
14239
  };
13182
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_19 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
14240
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_19 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
13183
14241
  class: "txt"
13184
14242
  }, "【正确答案】:", -1);
13185
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_20 = ["src"];
13186
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_21 = {
14243
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_20 = ["src"];
14244
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_21 = {
13187
14245
  key: 0,
13188
14246
  class: "question-analysis-item"
13189
14247
  };
13190
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_22 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
14248
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_22 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
13191
14249
  class: "txt"
13192
14250
  }, "【本题解析】:", -1);
13193
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_23 = {
14251
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_23 = {
13194
14252
  class: "txt-box"
13195
14253
  };
13196
- const Question_Programmingvue_type_template_id_f33b5d50_hoisted_24 = ["innerHTML"];
13197
- function Question_Programmingvue_type_template_id_f33b5d50_render(_ctx, _cache, $props, $setup, $data, $options) {
14254
+ const Question_Programmingvue_type_template_id_66006ba2_hoisted_24 = ["innerHTML"];
14255
+ function Question_Programmingvue_type_template_id_66006ba2_render(_ctx, _cache, $props, $setup, $data, $options) {
13198
14256
  const _component_MediaLooker = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveComponent)("MediaLooker");
13199
14257
  const _component_IframeComponent = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveComponent)("IframeComponent");
13200
14258
  const _component_Loading = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveComponent)("Loading");
13201
- return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_1, [!$props.isSub ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($props.questionInfo.questionIndex) + "、" + (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($props.questionInfo.hint ? $props.questionInfo.hint : $props.questionInfo.question_type_str), 1), $props.questionInfo.score !== 'null' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("span", Question_Programmingvue_type_template_id_f33b5d50_hoisted_3)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), $props.mode === 'analysis' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("span", Question_Programmingvue_type_template_id_f33b5d50_hoisted_4, "得分:" + (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($props.questionInfo.answerMap ? $props.questionInfo.answerMap.user_score : '-') + "分", 1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_5, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
14259
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_1, [!$props.isSub ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($props.questionInfo.questionIndex) + "、" + (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($props.questionInfo.hint ? $props.questionInfo.hint : $props.questionInfo.question_type_str), 1), $props.questionInfo.score !== 'null' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("span", Question_Programmingvue_type_template_id_66006ba2_hoisted_3)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), $props.mode === 'analysis' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("span", Question_Programmingvue_type_template_id_66006ba2_hoisted_4, "得分:" + (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($props.questionInfo.answerMap ? $props.questionInfo.answerMap.user_score : '-') + "分", 1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_5, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13202
14260
  class: "editor-content",
13203
14261
  innerHTML: $props.questionInfo.htmlContent
13204
- }, null, 8, Question_Programmingvue_type_template_id_f33b5d50_hoisted_6), $props.mode === 'exam' && !$data.oss_temp_url || $props.mode === 'review' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("button", {
14262
+ }, null, 8, Question_Programmingvue_type_template_id_66006ba2_hoisted_6), $props.mode === 'exam' && !$data.oss_temp_url || $props.mode === 'review' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("button", {
13205
14263
  key: 0,
13206
14264
  class: "bcdt-btn",
13207
14265
  onClick: _cache[0] || (_cache[0] = $event => $options.startCode('1'))
13208
- }, "进入" + (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($data.codeTypeMap[$props.questionInfo.code_type]) + "答题", 1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), $props.mode === 'exam' && $data.oss_temp_url ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_7, [Question_Programmingvue_type_template_id_f33b5d50_hoisted_8, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_9, [Question_Programmingvue_type_template_id_f33b5d50_hoisted_10, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
14266
+ }, "进入" + (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($data.codeTypeMap[$props.questionInfo.code_type]) + "答题", 1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), $props.mode === 'exam' && $data.oss_temp_url ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_7, [Question_Programmingvue_type_template_id_66006ba2_hoisted_8, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_9, [Question_Programmingvue_type_template_id_66006ba2_hoisted_10, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13209
14267
  class: "img-box",
13210
14268
  onClick: _cache[1] || (_cache[1] = $event => $options.startCode('2'))
13211
14269
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("img", {
13212
14270
  src: $data.codeTypeImgMap[$props.questionInfo.code_type]
13213
- }, null, 8, Question_Programmingvue_type_template_id_f33b5d50_hoisted_11), Question_Programmingvue_type_template_id_f33b5d50_hoisted_12])])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), $props.mode === 'analysis' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_13, [Question_Programmingvue_type_template_id_f33b5d50_hoisted_14, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_15, [Question_Programmingvue_type_template_id_f33b5d50_hoisted_16, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
14271
+ }, null, 8, Question_Programmingvue_type_template_id_66006ba2_hoisted_11), Question_Programmingvue_type_template_id_66006ba2_hoisted_12])])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true), $props.mode === 'analysis' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_13, [Question_Programmingvue_type_template_id_66006ba2_hoisted_14, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_15, [Question_Programmingvue_type_template_id_66006ba2_hoisted_16, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13214
14272
  class: "img-box",
13215
14273
  onClick: _cache[2] || (_cache[2] = $event => $options.startCode('3'))
13216
14274
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("img", {
13217
14275
  src: $data.codeTypeImgMap[$props.questionInfo.code_type]
13218
- }, null, 8, Question_Programmingvue_type_template_id_f33b5d50_hoisted_17)])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_18, [Question_Programmingvue_type_template_id_f33b5d50_hoisted_19, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
14276
+ }, null, 8, Question_Programmingvue_type_template_id_66006ba2_hoisted_17)])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_18, [Question_Programmingvue_type_template_id_66006ba2_hoisted_19, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
13219
14277
  class: "img-box",
13220
14278
  onClick: _cache[3] || (_cache[3] = $event => $options.startCode('4'))
13221
14279
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("img", {
13222
14280
  src: $data.codeTypeImgMap[$props.questionInfo.code_type]
13223
- }, null, 8, Question_Programmingvue_type_template_id_f33b5d50_hoisted_20)])]), $props.questionInfo.analysis ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_21, [Question_Programmingvue_type_template_id_f33b5d50_hoisted_22, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_f33b5d50_hoisted_23, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
14281
+ }, null, 8, Question_Programmingvue_type_template_id_66006ba2_hoisted_20)])]), $props.questionInfo.analysis ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_21, [Question_Programmingvue_type_template_id_66006ba2_hoisted_22, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Programmingvue_type_template_id_66006ba2_hoisted_23, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
13224
14282
  class: "analysis-txt",
13225
14283
  innerHTML: $props.questionInfo.analysisHtmlContent
13226
- }, null, 8, Question_Programmingvue_type_template_id_f33b5d50_hoisted_24)])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)]), _ctx.visible ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createBlock)(_component_MediaLooker, {
14284
+ }, null, 8, Question_Programmingvue_type_template_id_66006ba2_hoisted_24)])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)]), _ctx.visible ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createBlock)(_component_MediaLooker, {
13227
14285
  key: 1,
13228
14286
  visible: _ctx.visible,
13229
14287
  "onUpdate:visible": _cache[4] || (_cache[4] = $event => _ctx.visible = $event),
@@ -13242,7 +14300,7 @@ function Question_Programmingvue_type_template_id_f33b5d50_render(_ctx, _cache,
13242
14300
  loading: $data.loading
13243
14301
  }, null, 8, ["loading"])]);
13244
14302
  }
13245
- ;// CONCATENATED MODULE: ./src/components/questions/Question_Programming.vue?vue&type=template&id=f33b5d50
14303
+ ;// CONCATENATED MODULE: ./src/components/questions/Question_Programming.vue?vue&type=template&id=66006ba2
13246
14304
 
13247
14305
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/common/IframeComponent.vue?vue&type=template&id=0d05d84e
13248
14306
 
@@ -14964,6 +16022,10 @@ var index = {
14964
16022
  /* harmony default export */ var Question_Programmingvue_type_script_lang_js = ({
14965
16023
  name: 'Question_Programming',
14966
16024
  props: {
16025
+ isEnterCodeByInit: {
16026
+ type: Boolean,
16027
+ default: false
16028
+ },
14967
16029
  urlQuery: {
14968
16030
  type: String,
14969
16031
  default: ''
@@ -15000,6 +16062,16 @@ var index = {
15000
16062
  immediate: true
15001
16063
  });
15002
16064
  },
16065
+ created() {
16066
+ //设置了后无需点击按钮直接进入编辑器
16067
+ if (this.isEnterCodeByInit) {
16068
+ if (this.oss_temp_url) {
16069
+ this.startCode('2');
16070
+ } else {
16071
+ this.startCode('1');
16072
+ }
16073
+ }
16074
+ },
15003
16075
  data() {
15004
16076
  return {
15005
16077
  iframe: null,
@@ -15142,8 +16214,10 @@ var index = {
15142
16214
  //关闭iframe并且保存(考试中)
15143
16215
  closeAndSave(res) {
15144
16216
  this.saveCodeOnly(res);
15145
- this.closeIframe();
15146
- this.$emit('closeAndSave');
16217
+ if (!this.isEnterCodeByInit) {
16218
+ this.closeIframe();
16219
+ }
16220
+ this.$emit('closeAndSave', res);
15147
16221
  },
15148
16222
  saveCodeOnly(res) {
15149
16223
  let self = this;
@@ -15160,7 +16234,7 @@ var index = {
15160
16234
  questionIndex: self.questionInfo.questionIndex - 1,
15161
16235
  answered
15162
16236
  });
15163
- this.$emit('saveCodeOnly');
16237
+ this.$emit('saveCodeOnly', res);
15164
16238
  },
15165
16239
  uploadCodingFileSuccess(res) {
15166
16240
  this.code_file_oss_temp_path = res.codeFileOssTempPath;
@@ -15183,9 +16257,382 @@ var index = {
15183
16257
 
15184
16258
 
15185
16259
  ;
15186
- const Question_Programming_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Question_Programmingvue_type_script_lang_js, [['render',Question_Programmingvue_type_template_id_f33b5d50_render]])
16260
+ const Question_Programming_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Question_Programmingvue_type_script_lang_js, [['render',Question_Programmingvue_type_template_id_66006ba2_render]])
15187
16261
 
15188
16262
  /* harmony default export */ var Question_Programming = (Question_Programming_exports_);
16263
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/questions/Question_Classify.vue?vue&type=template&id=08b2b52d
16264
+
16265
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_1 = {
16266
+ class: "zykjcommon-question",
16267
+ style: {
16268
+ "width": "100%",
16269
+ "height": "100%"
16270
+ }
16271
+ };
16272
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_2 = {
16273
+ class: "question-classify"
16274
+ };
16275
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_3 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createStaticVNode)("<div class=\"box\"><div class=\"box-item\"><div class=\"main-block\"></div><div class=\"main-content\"><div class=\"main-append\"></div></div></div><div class=\"box-item\"><div class=\"main-block\"></div><div class=\"main-content\"><div class=\"main-append\"></div></div></div></div>", 1);
16276
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_4 = {
16277
+ class: "list-outter"
16278
+ };
16279
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_5 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
16280
+ class: "prev"
16281
+ }, [/*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
16282
+ class: "prev-main"
16283
+ })], -1);
16284
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_6 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
16285
+ class: "next"
16286
+ }, [/*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", {
16287
+ class: "next-main"
16288
+ })], -1);
16289
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_7 = {
16290
+ class: "list"
16291
+ };
16292
+ const Question_Classifyvue_type_template_id_08b2b52d_hoisted_8 = {
16293
+ class: "list-item-text"
16294
+ };
16295
+ function Question_Classifyvue_type_template_id_08b2b52d_render(_ctx, _cache, $props, $setup, $data, $options) {
16296
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", Question_Classifyvue_type_template_id_08b2b52d_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Classifyvue_type_template_id_08b2b52d_hoisted_2, [Question_Classifyvue_type_template_id_08b2b52d_hoisted_3, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Classifyvue_type_template_id_08b2b52d_hoisted_4, [Question_Classifyvue_type_template_id_08b2b52d_hoisted_5, Question_Classifyvue_type_template_id_08b2b52d_hoisted_6, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Classifyvue_type_template_id_08b2b52d_hoisted_7, [((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_.Fragment, null, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderList)($data.list, (item, index) => {
16297
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", {
16298
+ class: "list-item",
16299
+ key: index
16300
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("div", Question_Classifyvue_type_template_id_08b2b52d_hoisted_8, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)(item.name), 1)]);
16301
+ }), 128))])])])]);
16302
+ }
16303
+ ;// CONCATENATED MODULE: ./src/components/questions/Question_Classify.vue?vue&type=template&id=08b2b52d
16304
+
16305
+ ;// CONCATENATED MODULE: ./src/assets/js/rem.js
16306
+ /**
16307
+ * Created by Allen Liu on 2022/3/31.
16308
+ */
16309
+
16310
+ let setRem = function () {
16311
+ //动态设置html的font-size ----start
16312
+ let designWidth = 1440;
16313
+ let baseNum = 100;
16314
+ function setRootFontSize() {
16315
+ let winWidth = document.documentElement.clientWidth || document.body.clientWidth;
16316
+ let winHeight = document.documentElement.clientHeight || document.body.clientHeight;
16317
+ let html = document.getElementsByTagName('html')[0];
16318
+ /*if(winWidth>=1000){
16319
+ winWidth = 1000
16320
+ }*/
16321
+ let frameBili = 4 / 3;
16322
+ let b = frameBili / (winWidth / winHeight);
16323
+ // let realW = parseInt(winWidth * b)
16324
+ let realW = winWidth - 50;
16325
+ // console.log(realW,3333333333333);
16326
+
16327
+ html.style.fontSize = realW / designWidth * baseNum + 'px';
16328
+ // console.log(html.style.fontSize);
16329
+ }
16330
+
16331
+ setRootFontSize();
16332
+ window.addEventListener('resize', e => {
16333
+ setRootFontSize();
16334
+ });
16335
+ //动态设置html的font-size ----end
16336
+ };
16337
+
16338
+ let setRemFixedHeight = function (designWidth = 1440, repairH = 0, scale = 1) {
16339
+ let baseNum = 100;
16340
+ let winWidth = document.documentElement.clientWidth || document.body.clientWidth;
16341
+ let winHeight = document.documentElement.clientHeight || document.body.clientHeight;
16342
+ winHeight = winHeight - repairH;
16343
+ let html = document.getElementsByTagName('html')[0];
16344
+ let frameBili = 4 / 3;
16345
+ let b = frameBili / (winWidth / winHeight);
16346
+ let realW = parseInt(winWidth * b);
16347
+ html.style.fontSize = realW / designWidth * baseNum * scale + 'px';
16348
+ console.log(html.style.fontSize);
16349
+ };
16350
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/questions/Question_Classify.vue?vue&type=script&lang=js
16351
+
16352
+
16353
+
16354
+ let env = js_fun.getDeviceEnv();
16355
+ /* harmony default export */ var Question_Classifyvue_type_script_lang_js = ({
16356
+ name: 'Question_Classify',
16357
+ props: {
16358
+ questionInfo: {
16359
+ type: Object,
16360
+ default: {}
16361
+ },
16362
+ bus: {
16363
+ type: Object,
16364
+ default: {}
16365
+ },
16366
+ mode: {
16367
+ type: String,
16368
+ default: 'exam'
16369
+ }
16370
+ },
16371
+ created() {
16372
+ this.setRootFontSize();
16373
+ window.addEventListener('resize', this.setRootFontSize);
16374
+ },
16375
+ unmounted() {
16376
+ this.unmountedDo();
16377
+ },
16378
+ destroyed() {
16379
+ this.unmountedDo();
16380
+ },
16381
+ mounted() {
16382
+ this.init();
16383
+ this.$watch('list', nv => {
16384
+ if (nv && nv.length) {
16385
+ this.$nextTick(() => {
16386
+ this.dothings();
16387
+ });
16388
+ }
16389
+ });
16390
+ setTimeout(() => {
16391
+ this.list = [{
16392
+ name: '每年春夏秋冬季节变化'
16393
+ }, {
16394
+ name: '音乐播放10次'
16395
+ }, {
16396
+ name: '把10个梨子放进篮子'
16397
+ }, {
16398
+ name: '音乐播放9次'
16399
+ }, {
16400
+ name: '把9个梨子放进篮子'
16401
+ }, {
16402
+ name: '音乐播放8次'
16403
+ }, {
16404
+ name: '把8个梨子放进篮子'
16405
+ }, {
16406
+ name: '音乐播放6次'
16407
+ }];
16408
+ }, 500);
16409
+ },
16410
+ data() {
16411
+ return {
16412
+ analyCorrectAnswer: '',
16413
+ exam_options_data: [],
16414
+ answerMap: {},
16415
+ list: [],
16416
+ env,
16417
+ p1: {},
16418
+ //存mousedown相关
16419
+ p2: {},
16420
+ //存mousemove相关
16421
+ listItem: null,
16422
+ moveDiv: null,
16423
+ timer: null,
16424
+ mousedown: env === 'mobile' ? 'touchstart' : 'mousedown',
16425
+ mousemove: env === 'mobile' ? 'touchmove' : 'mousemove',
16426
+ mouseup: env === 'mobile' ? 'touchend' : 'mouseup',
16427
+ dragWay: '',
16428
+ flag: false,
16429
+ scrollDistance: 3000 //设置一个死的滚动距离,保证能滚到底,目前够用
16430
+ };
16431
+ },
16432
+
16433
+ watch: {},
16434
+ computed: {},
16435
+ methods: {
16436
+ setRootFontSize() {
16437
+ setRemFixedHeight(1000, 140, 1.08);
16438
+ },
16439
+ unmountedDo() {
16440
+ window.removeEventListener('resize', this.setRootFontSize);
16441
+ document.removeEventListener('gesturestart', this.gesturestartListener);
16442
+ $('.question-classify .append-item').off(this.mousedown);
16443
+ $('.question-classify .list-item').off(this.mousedown);
16444
+ $(document).off(this.mouseup);
16445
+ let html = document.getElementsByTagName("html")[0];
16446
+ html.style.fontSize = "";
16447
+ },
16448
+ gesturestartListener(event) {
16449
+ event.preventDefault();
16450
+ },
16451
+ init() {
16452
+ //禁止ios10以上缩放页面
16453
+ if (env === 'mobile') {
16454
+ document.addEventListener('gesturestart', this.gesturestartListener);
16455
+ }
16456
+ },
16457
+ getSpecArr() {
16458
+ let self = this;
16459
+ let specArr = [];
16460
+ let moveDivLeft = self.moveDiv.offset().left;
16461
+ let moveDivLeftEnd = moveDivLeft + self.moveDiv.width();
16462
+ let moveDivTop = self.moveDiv.offset().top;
16463
+ let moveDivTopEnd = moveDivTop + self.moveDiv.height();
16464
+ $('.box-item').each((index, item) => {
16465
+ let boxItem = $(item);
16466
+ let boxLeft = boxItem.offset().left;
16467
+ let boxLeftEnd = boxLeft + boxItem.width();
16468
+ let boxTop = boxItem.offset().top;
16469
+ let boxTopEnd = boxTop + boxItem.height();
16470
+ if (moveDivLeft > boxLeft && moveDivLeftEnd < boxLeftEnd && moveDivTop > boxTop && moveDivTopEnd < boxTopEnd) {
16471
+ specArr.push({
16472
+ dom: boxItem
16473
+ });
16474
+ }
16475
+ });
16476
+ return specArr;
16477
+ },
16478
+ bindDragDomEvent(appendItem, way) {
16479
+ let self = this;
16480
+ appendItem.on(this.mousedown, function (e) {
16481
+ if (self.moveDiv) {
16482
+ return;
16483
+ }
16484
+ self.flag = false;
16485
+ self.dragWay = way;
16486
+ console.log(e);
16487
+ e.stopPropagation();
16488
+ e.preventDefault();
16489
+ self.listItem = $(this);
16490
+ self.listItem.addClass('drag');
16491
+ self.p1.moveX = self.listItem.offset().left;
16492
+ self.p1.moveY = self.listItem.offset().top - 30;
16493
+ console.log(this.p1);
16494
+ self.moveDiv = $(`<div class="question-classify-moveDiv"><div class="list-item-text">${self.listItem.find('.list-item-text').text()}</div></div>`);
16495
+ self.moveDiv.css({
16496
+ left: `${self.p1.moveX}px`,
16497
+ top: `${self.p1.moveY}px`
16498
+ });
16499
+ $('body').append(self.moveDiv);
16500
+ $(document).on(self.mousemove, function (e2) {
16501
+ // e2.preventDefault()
16502
+ e2.stopPropagation();
16503
+ self.p2.moveX = e2.clientX || e2.originalEvent.touches && e2.originalEvent.touches[0].clientX;
16504
+ self.p2.moveY = e2.clientY || e2.originalEvent.touches && e2.originalEvent.touches[0].clientY;
16505
+ let curX = self.p2.moveX - self.moveDiv.width() / 2;
16506
+ let curY = self.p2.moveY - self.moveDiv.height() / 2;
16507
+ self.moveDiv.css({
16508
+ left: curX + 'px',
16509
+ top: curY + 'px'
16510
+ });
16511
+ });
16512
+ });
16513
+ },
16514
+ appendMoveDiv(options) {
16515
+ let self = this;
16516
+ self.listItem.remove();
16517
+ let appendItem = $(`<div class="${options.appendItemClassName}"><div class="list-item-text">${self.moveDiv.find('.list-item-text').text()}</div></div>`);
16518
+ appendItem.css({
16519
+ opacity: 0
16520
+ });
16521
+ options.targetList.append(appendItem);
16522
+ options.targetList[options.scrollDirection](self.scrollDistance);
16523
+ let appendLeft = appendItem.offset().left;
16524
+ let appendTop = appendItem.offset().top;
16525
+ //transitionend事件会执行2次,所以使用标记避免
16526
+ self.moveDiv.css({
16527
+ transition: 'all 0.5s',
16528
+ left: appendLeft,
16529
+ top: appendTop
16530
+ }).on('transitionend', function () {
16531
+ if (!self.flag) {
16532
+ self.moveDiv.remove();
16533
+ self.moveDiv.off('transitionend');
16534
+ self.moveDiv = null;
16535
+ appendItem.css({
16536
+ opacity: 1
16537
+ });
16538
+ self.bindDragDomEvent(appendItem, options.op);
16539
+ }
16540
+ self.flag = true;
16541
+ });
16542
+ },
16543
+ bindNextPrevEvent(type) {
16544
+ $(`.question-classify .${type}`).on('click', function (e) {
16545
+ e.stopPropagation();
16546
+ e.preventDefault();
16547
+ let listItem = $('.question-classify .list-item');
16548
+ let list = $('.question-classify .list');
16549
+ let w = listItem.outerWidth() * (type === 'next' ? 1 : -1);
16550
+ let scrollLeft = list.scrollLeft();
16551
+ console.log(scrollLeft);
16552
+ $('.question-classify .list').stop(true).animate({
16553
+ scrollLeft: scrollLeft + w
16554
+ }, 500);
16555
+ });
16556
+ },
16557
+ dothings() {
16558
+ let self = this;
16559
+ self.bindDragDomEvent($('.question-classify .list-item'), 'go');
16560
+ $(document).on(self.mouseup, function (e) {
16561
+ // e.preventDefault()
16562
+ if (self.dragWay === 'go') {
16563
+ $(document).off(self.mousemove);
16564
+ self.listItem && self.listItem.removeClass('drag');
16565
+ if (self.moveDiv) {
16566
+ let specArr = self.getSpecArr();
16567
+ if (specArr.length === 0) {
16568
+ //没进框内,回到原位
16569
+ if (self.moveDiv) {
16570
+ self.moveDiv.remove();
16571
+ self.moveDiv = null;
16572
+ }
16573
+ } else {
16574
+ let appendItemBox = specArr[0].dom;
16575
+ self.appendMoveDiv({
16576
+ targetList: appendItemBox.find('.main-append'),
16577
+ appendItemClassName: 'append-item',
16578
+ op: 'back',
16579
+ scrollDirection: 'scrollTop'
16580
+ });
16581
+ }
16582
+ }
16583
+ } else if (self.dragWay === 'back') {
16584
+ $(document).off(self.mousemove);
16585
+ self.listItem && self.listItem.removeClass('drag');
16586
+ if (self.moveDiv) {
16587
+ let specArr = self.getSpecArr();
16588
+ //0说明都不在两个框内 1说明在其中一个框内
16589
+ if (specArr.length === 0) {
16590
+ self.appendMoveDiv({
16591
+ targetList: $('.question-classify .list'),
16592
+ appendItemClassName: 'list-item',
16593
+ op: 'go',
16594
+ scrollDirection: 'scrollLeft'
16595
+ });
16596
+ } else {
16597
+ let appendItemBox = specArr[0].dom;
16598
+ let curAppendItemBox = self.listItem.parents('.question-classify .box-item');
16599
+ if (appendItemBox.get(0) === curAppendItemBox.get(0)) {
16600
+ console.log('自己');
16601
+ self.moveDiv.remove();
16602
+ self.moveDiv = null;
16603
+ self.listItem && self.listItem.removeClass('drag');
16604
+ } else {
16605
+ console.log('不是自己');
16606
+ self.appendMoveDiv({
16607
+ targetList: appendItemBox.find('.main-append'),
16608
+ appendItemClassName: 'append-item',
16609
+ op: 'back',
16610
+ scrollDirection: 'scrollTop'
16611
+ });
16612
+ console.log('不是自己');
16613
+ }
16614
+ }
16615
+ console.log(specArr.length);
16616
+ }
16617
+ }
16618
+ });
16619
+ self.bindNextPrevEvent('next');
16620
+ self.bindNextPrevEvent('prev');
16621
+ }
16622
+ },
16623
+ components: {}
16624
+ });
16625
+ ;// CONCATENATED MODULE: ./src/components/questions/Question_Classify.vue?vue&type=script&lang=js
16626
+
16627
+ ;// CONCATENATED MODULE: ./src/components/questions/Question_Classify.vue
16628
+
16629
+
16630
+
16631
+
16632
+ ;
16633
+ const Question_Classify_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Question_Classifyvue_type_script_lang_js, [['render',Question_Classifyvue_type_template_id_08b2b52d_render]])
16634
+
16635
+ /* harmony default export */ var Question_Classify = (Question_Classify_exports_);
15189
16636
  ;// CONCATENATED MODULE: ./src/components/questions/const.js
15190
16637
  /**
15191
16638
  * Created by Allen Liu on 2022/4/22.
@@ -15204,7 +16651,9 @@ let questionMapper = {
15204
16651
  //编程
15205
16652
  '11': 'Question_Reading',
15206
16653
  //阅读
15207
- '4': 'Question_FillBlank' //填空
16654
+ '4': 'Question_FillBlank',
16655
+ //填空
16656
+ '17': 'Question_Classify' //分类
15208
16657
  };
15209
16658
  // EXTERNAL MODULE: ./node_modules/crypto-js/index.js
15210
16659
  var crypto_js = __webpack_require__(1354);
@@ -15483,6 +16932,7 @@ const state = {
15483
16932
 
15484
16933
 
15485
16934
 
16935
+
15486
16936
  /* harmony default export */ function buildEntry(store) {
15487
16937
  //动态注册store
15488
16938
  store.registerModule('zykjcommonQuestions', questions_store);
@@ -15595,13 +17045,15 @@ const state = {
15595
17045
  Vue.component('Question_BriefAnswer', Question_BriefAnswer);
15596
17046
  Vue.component('Question_FillBlank', Question_FillBlank);
15597
17047
  Vue.component('Question_Programming', Question_Programming);
17048
+ Vue.component('Question_Classify', Question_Classify);
15598
17049
  },
15599
17050
  Question_SingleChoice: Question_SingleChoice,
15600
17051
  Question_MultipleChoice: Question_MultipleChoice,
15601
17052
  Question_Reading: Question_Reading,
15602
17053
  Question_BriefAnswer: Question_BriefAnswer,
15603
17054
  Question_FillBlank: Question_FillBlank,
15604
- Question_Programming: Question_Programming
17055
+ Question_Programming: Question_Programming,
17056
+ Question_Classify: Question_Classify
15605
17057
  };
15606
17058
  }
15607
17059
  ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js