1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488 |
- /**
- * Dark Reader v4.9.51
- * https://darkreader.org/
- */
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.DarkReader = {}));
- })(this, (function (exports) { 'use strict';
- /*! *****************************************************************************
- Copyright (c) Microsoft Corporation.
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */
- var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- function __awaiter(thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- }
- function __generator(thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- }
- function __values(o) {
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
- if (m) return m.call(o);
- if (o && typeof o.length === "number") return {
- next: function () {
- if (o && i >= o.length) o = void 0;
- return { value: o && o[i++], done: !o };
- }
- };
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
- }
- function __read(o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
- }
- function __spreadArray(to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- }
- var MessageType = {
- UI_GET_DATA: 'ui-get-data',
- UI_SUBSCRIBE_TO_CHANGES: 'ui-subscribe-to-changes',
- UI_UNSUBSCRIBE_FROM_CHANGES: 'ui-unsubscribe-from-changes',
- UI_CHANGE_SETTINGS: 'ui-change-settings',
- UI_SET_THEME: 'ui-set-theme',
- UI_SET_SHORTCUT: 'ui-set-shortcut',
- UI_TOGGLE_ACTIVE_TAB: 'ui-toggle-active-tab',
- UI_MARK_NEWS_AS_READ: 'ui-mark-news-as-read',
- UI_MARK_NEWS_AS_DISPLAYED: 'ui-mark-news-as-displayed',
- UI_LOAD_CONFIG: 'ui-load-config',
- UI_APPLY_DEV_DYNAMIC_THEME_FIXES: 'ui-apply-dev-dynamic-theme-fixes',
- UI_RESET_DEV_DYNAMIC_THEME_FIXES: 'ui-reset-dev-dynamic-theme-fixes',
- UI_APPLY_DEV_INVERSION_FIXES: 'ui-apply-dev-inversion-fixes',
- UI_RESET_DEV_INVERSION_FIXES: 'ui-reset-dev-inversion-fixes',
- UI_APPLY_DEV_STATIC_THEMES: 'ui-apply-dev-static-themes',
- UI_RESET_DEV_STATIC_THEMES: 'ui-reset-dev-static-themes',
- UI_SAVE_FILE: 'ui-save-file',
- UI_REQUEST_EXPORT_CSS: 'ui-request-export-css',
- BG_CHANGES: 'bg-changes',
- BG_ADD_CSS_FILTER: 'bg-add-css-filter',
- BG_ADD_STATIC_THEME: 'bg-add-static-theme',
- BG_ADD_SVG_FILTER: 'bg-add-svg-filter',
- BG_ADD_DYNAMIC_THEME: 'bg-add-dynamic-theme',
- BG_EXPORT_CSS: 'bg-export-css',
- BG_UNSUPPORTED_SENDER: 'bg-unsupported-sender',
- BG_CLEAN_UP: 'bg-clean-up',
- BG_RELOAD: 'bg-reload',
- BG_FETCH_RESPONSE: 'bg-fetch-response',
- BG_UI_UPDATE: 'bg-ui-update',
- BG_CSS_UPDATE: 'bg-css-update',
- CS_COLOR_SCHEME_CHANGE: 'cs-color-scheme-change',
- CS_FRAME_CONNECT: 'cs-frame-connect',
- CS_FRAME_FORGET: 'cs-frame-forget',
- CS_FRAME_FREEZE: 'cs-frame-freeze',
- CS_FRAME_RESUME: 'cs-frame-resume',
- CS_EXPORT_CSS_RESPONSE: 'cs-export-css-response',
- CS_FETCH: 'cs-fetch',
- CS_DARK_THEME_DETECTED: 'cs-dark-theme-detected',
- CS_DARK_THEME_NOT_DETECTED: 'cs-dark-theme-not-detected',
- };
- var userAgent = typeof navigator === 'undefined' ? 'some useragent' : navigator.userAgent.toLowerCase();
- var platform = typeof navigator === 'undefined' ? 'some platform' : navigator.platform.toLowerCase();
- var isChromium = userAgent.includes('chrome') || userAgent.includes('chromium');
- var isThunderbird = userAgent.includes('thunderbird');
- var isFirefox = userAgent.includes('firefox') || userAgent.includes('librewolf') || isThunderbird;
- userAgent.includes('vivaldi');
- userAgent.includes('yabrowser');
- userAgent.includes('opr') || userAgent.includes('opera');
- userAgent.includes('edg');
- var isSafari = userAgent.includes('safari') && !isChromium;
- var isWindows = platform.startsWith('win');
- var isMacOS = platform.startsWith('mac');
- userAgent.includes('mobile');
- var isShadowDomSupported = typeof ShadowRoot === 'function';
- var isMatchMediaChangeEventListenerSupported = (typeof MediaQueryList === 'function' &&
- typeof MediaQueryList.prototype.addEventListener === 'function');
- ((function () {
- var m = userAgent.match(/chrom[e|ium]\/([^ ]+)/);
- if (m && m[1]) {
- return m[1];
- }
- return '';
- }))();
- var isDefinedSelectorSupported = (function () {
- try {
- document.querySelector(':defined');
- return true;
- }
- catch (err) {
- return false;
- }
- })();
- globalThis.chrome && globalThis.chrome.runtime && globalThis.chrome.runtime.getManifest && globalThis.chrome.runtime.getManifest().manifest_version === 3;
- var isCSSColorSchemePropSupported = (function () {
- if (typeof document === 'undefined') {
- return false;
- }
- var el = document.createElement('div');
- el.setAttribute('style', 'color-scheme: dark');
- return el.style && el.style.colorScheme === 'dark';
- })();
- function getOKResponse(url, mimeType, origin) {
- return __awaiter(this, void 0, void 0, function () {
- var response;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4, fetch(url, {
- cache: 'force-cache',
- credentials: 'omit',
- referrer: origin
- })];
- case 1:
- response = _a.sent();
- if (isFirefox && mimeType === 'text/css' && url.startsWith('moz-extension://') && url.endsWith('.css')) {
- return [2, response];
- }
- if (mimeType && !response.headers.get('Content-Type').startsWith(mimeType)) {
- throw new Error("Mime type mismatch when loading ".concat(url));
- }
- if (!response.ok) {
- throw new Error("Unable to load ".concat(url, " ").concat(response.status, " ").concat(response.statusText));
- }
- return [2, response];
- }
- });
- });
- }
- function loadAsDataURL(url, mimeType) {
- return __awaiter(this, void 0, void 0, function () {
- var response;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4, getOKResponse(url, mimeType)];
- case 1:
- response = _a.sent();
- return [4, readResponseAsDataURL(response)];
- case 2: return [2, _a.sent()];
- }
- });
- });
- }
- function readResponseAsDataURL(response) {
- return __awaiter(this, void 0, void 0, function () {
- var blob, dataURL;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4, response.blob()];
- case 1:
- blob = _a.sent();
- return [4, (new Promise(function (resolve) {
- var reader = new FileReader();
- reader.onloadend = function () { return resolve(reader.result); };
- reader.readAsDataURL(blob);
- }))];
- case 2:
- dataURL = _a.sent();
- return [2, dataURL];
- }
- });
- });
- }
- var throwCORSError = function (url) { return __awaiter(void 0, void 0, void 0, function () {
- return __generator(this, function (_a) {
- return [2, Promise.reject(new Error([
- 'Embedded Dark Reader cannot access a cross-origin resource',
- url,
- 'Overview your URLs and CORS policies or use',
- '`DarkReader.setFetchMethod(fetch: (url) => Promise<Response>))`.',
- 'See if using `DarkReader.setFetchMethod(window.fetch)`',
- 'before `DarkReader.enable()` works.'
- ].join(' ')))];
- });
- }); };
- var fetcher = throwCORSError;
- function setFetchMethod$1(fetch) {
- if (fetch) {
- fetcher = fetch;
- }
- else {
- fetcher = throwCORSError;
- }
- }
- function callFetchMethod(url) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4, fetcher(url)];
- case 1: return [2, _a.sent()];
- }
- });
- });
- }
- if (!window.chrome) {
- window.chrome = {};
- }
- if (!chrome.runtime) {
- chrome.runtime = {};
- }
- var messageListeners = new Set();
- function sendMessage() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return __awaiter(this, void 0, void 0, function () {
- var id_1, _a, url, responseType, response, text_1, error_1;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- if (!(args[0] && args[0].type === MessageType.CS_FETCH)) return [3, 8];
- id_1 = args[0].id;
- _b.label = 1;
- case 1:
- _b.trys.push([1, 7, , 8]);
- _a = args[0].data, url = _a.url, responseType = _a.responseType;
- return [4, callFetchMethod(url)];
- case 2:
- response = _b.sent();
- if (!(responseType === 'data-url')) return [3, 4];
- return [4, readResponseAsDataURL(response)];
- case 3:
- text_1 = _b.sent();
- return [3, 6];
- case 4: return [4, response.text()];
- case 5:
- text_1 = _b.sent();
- _b.label = 6;
- case 6:
- messageListeners.forEach(function (cb) { return cb({ type: MessageType.BG_FETCH_RESPONSE, data: text_1, error: null, id: id_1 }); });
- return [3, 8];
- case 7:
- error_1 = _b.sent();
- console.error(error_1);
- messageListeners.forEach(function (cb) { return cb({ type: MessageType.BG_FETCH_RESPONSE, data: null, error: error_1, id: id_1 }); });
- return [3, 8];
- case 8: return [2];
- }
- });
- });
- }
- function addMessageListener(callback) {
- messageListeners.add(callback);
- }
- if (typeof chrome.runtime.sendMessage === 'function') {
- var nativeSendMessage_1 = chrome.runtime.sendMessage;
- chrome.runtime.sendMessage = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- sendMessage.apply(void 0, __spreadArray([], __read(args), false));
- nativeSendMessage_1.apply(chrome.runtime, args);
- };
- }
- else {
- chrome.runtime.sendMessage = sendMessage;
- }
- if (!chrome.runtime.onMessage) {
- chrome.runtime.onMessage = {};
- }
- if (typeof chrome.runtime.onMessage.addListener === 'function') {
- var nativeAddListener_1 = chrome.runtime.onMessage.addListener;
- chrome.runtime.onMessage.addListener = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- addMessageListener(args[0]);
- nativeAddListener_1.apply(chrome.runtime.onMessage, args);
- };
- }
- else {
- chrome.runtime.onMessage.addListener = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return addMessageListener(args[0]);
- };
- }
- var ThemeEngines = {
- cssFilter: 'cssFilter',
- svgFilter: 'svgFilter',
- staticTheme: 'staticTheme',
- dynamicTheme: 'dynamicTheme',
- };
- var DEFAULT_COLORS = {
- darkScheme: {
- background: '#181a1b',
- text: '#e8e6e3',
- },
- lightScheme: {
- background: '#dcdad7',
- text: '#181a1b',
- },
- };
- var DEFAULT_THEME = {
- mode: 1,
- brightness: 100,
- contrast: 100,
- grayscale: 0,
- sepia: 0,
- useFont: false,
- fontFamily: isMacOS ? 'Helvetica Neue' : isWindows ? 'Segoe UI' : 'Open Sans',
- textStroke: 0,
- engine: ThemeEngines.dynamicTheme,
- stylesheet: '',
- darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background,
- darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text,
- lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background,
- lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text,
- scrollbarColor: isMacOS ? '' : 'auto',
- selectionColor: 'auto',
- styleSystemControls: !isCSSColorSchemePropSupported,
- lightColorScheme: 'Default',
- darkColorScheme: 'Default',
- immediateModify: false,
- };
- function isArrayLike(items) {
- return items.length != null;
- }
- function forEach(items, iterator) {
- var e_1, _a;
- if (isArrayLike(items)) {
- for (var i = 0, len = items.length; i < len; i++) {
- iterator(items[i]);
- }
- }
- else {
- try {
- for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
- var item = items_1_1.value;
- iterator(item);
- }
- }
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
- finally {
- try {
- if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);
- }
- finally { if (e_1) throw e_1.error; }
- }
- }
- }
- function push(array, addition) {
- forEach(addition, function (a) { return array.push(a); });
- }
- function toArray(items) {
- var results = [];
- for (var i = 0, len = items.length; i < len; i++) {
- results.push(items[i]);
- }
- return results;
- }
- function logInfo() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- }
- function logWarn() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- }
- function throttle(callback) {
- var pending = false;
- var frameId = null;
- var lastArgs;
- var throttled = (function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- lastArgs = args;
- if (frameId) {
- pending = true;
- }
- else {
- callback.apply(void 0, __spreadArray([], __read(lastArgs), false));
- frameId = requestAnimationFrame(function () {
- frameId = null;
- if (pending) {
- callback.apply(void 0, __spreadArray([], __read(lastArgs), false));
- pending = false;
- }
- });
- }
- });
- var cancel = function () {
- cancelAnimationFrame(frameId);
- pending = false;
- frameId = null;
- };
- return Object.assign(throttled, { cancel: cancel });
- }
- function createAsyncTasksQueue() {
- var tasks = [];
- var frameId = null;
- function runTasks() {
- var task;
- while ((task = tasks.shift())) {
- task();
- }
- frameId = null;
- }
- function add(task) {
- tasks.push(task);
- if (!frameId) {
- frameId = requestAnimationFrame(runTasks);
- }
- }
- function cancel() {
- tasks.splice(0);
- cancelAnimationFrame(frameId);
- frameId = null;
- }
- return { add: add, cancel: cancel };
- }
- function getDuration(time) {
- var duration = 0;
- if (time.seconds) {
- duration += time.seconds * 1000;
- }
- if (time.minutes) {
- duration += time.minutes * 60 * 1000;
- }
- if (time.hours) {
- duration += time.hours * 60 * 60 * 1000;
- }
- if (time.days) {
- duration += time.days * 24 * 60 * 60 * 1000;
- }
- return duration;
- }
- function removeNode(node) {
- node && node.parentNode && node.parentNode.removeChild(node);
- }
- function watchForNodePosition(node, mode, onRestore) {
- if (onRestore === void 0) { onRestore = Function.prototype; }
- var MAX_ATTEMPTS_COUNT = 10;
- var RETRY_TIMEOUT = getDuration({ seconds: 2 });
- var ATTEMPTS_INTERVAL = getDuration({ seconds: 10 });
- var prevSibling = node.previousSibling;
- var parent = node.parentNode;
- if (!parent) {
- throw new Error('Unable to watch for node position: parent element not found');
- }
- if (mode === 'prev-sibling' && !prevSibling) {
- throw new Error('Unable to watch for node position: there is no previous sibling');
- }
- var attempts = 0;
- var start = null;
- var timeoutId = null;
- var restore = throttle(function () {
- if (timeoutId) {
- return;
- }
- attempts++;
- var now = Date.now();
- if (start == null) {
- start = now;
- }
- else if (attempts >= MAX_ATTEMPTS_COUNT) {
- if (now - start < ATTEMPTS_INTERVAL) {
- logWarn("Node position watcher paused: retry in ".concat(RETRY_TIMEOUT, "ms"), node, prevSibling);
- timeoutId = setTimeout(function () {
- start = null;
- attempts = 0;
- timeoutId = null;
- restore();
- }, RETRY_TIMEOUT);
- return;
- }
- start = now;
- attempts = 1;
- }
- if (mode === 'parent') {
- if (prevSibling && prevSibling.parentNode !== parent) {
- logWarn('Unable to restore node position: sibling parent changed', node, prevSibling, parent);
- stop();
- return;
- }
- }
- if (mode === 'prev-sibling') {
- if (prevSibling.parentNode == null) {
- logWarn('Unable to restore node position: sibling was removed', node, prevSibling, parent);
- stop();
- return;
- }
- if (prevSibling.parentNode !== parent) {
- logWarn('Style was moved to another parent', node, prevSibling, parent);
- updateParent(prevSibling.parentNode);
- }
- }
- logWarn('Restoring node position', node, prevSibling, parent);
- parent.insertBefore(node, prevSibling ? prevSibling.nextSibling : parent.firstChild);
- observer.takeRecords();
- onRestore && onRestore();
- });
- var observer = new MutationObserver(function () {
- if ((mode === 'parent' && node.parentNode !== parent) ||
- (mode === 'prev-sibling' && node.previousSibling !== prevSibling)) {
- restore();
- }
- });
- var run = function () {
- observer.observe(parent, { childList: true });
- };
- var stop = function () {
- clearTimeout(timeoutId);
- observer.disconnect();
- restore.cancel();
- };
- var skip = function () {
- observer.takeRecords();
- };
- var updateParent = function (parentNode) {
- parent = parentNode;
- stop();
- run();
- };
- run();
- return { run: run, stop: stop, skip: skip };
- }
- function iterateShadowHosts(root, iterator) {
- if (root == null) {
- return;
- }
- var walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
- acceptNode: function (node) {
- return node.shadowRoot == null ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
- }
- });
- for (var node = (root.shadowRoot ? walker.currentNode : walker.nextNode()); node != null; node = walker.nextNode()) {
- if (node.classList.contains('surfingkeys_hints_host')) {
- continue;
- }
- iterator(node);
- iterateShadowHosts(node.shadowRoot, iterator);
- }
- }
- var isDOMReady = function () {
- return document.readyState === 'complete' || document.readyState === 'interactive';
- };
- function setIsDOMReady(newFunc) {
- isDOMReady = newFunc;
- }
- var readyStateListeners = new Set();
- function addDOMReadyListener(listener) {
- isDOMReady() ? listener() : readyStateListeners.add(listener);
- }
- function removeDOMReadyListener(listener) {
- readyStateListeners.delete(listener);
- }
- function isReadyStateComplete() {
- return document.readyState === 'complete';
- }
- var readyStateCompleteListeners = new Set();
- function addReadyStateCompleteListener(listener) {
- isReadyStateComplete() ? listener() : readyStateCompleteListeners.add(listener);
- }
- function cleanReadyStateCompleteListeners() {
- readyStateCompleteListeners.clear();
- }
- if (!isDOMReady()) {
- var onReadyStateChange_1 = function () {
- if (isDOMReady()) {
- readyStateListeners.forEach(function (listener) { return listener(); });
- readyStateListeners.clear();
- if (isReadyStateComplete()) {
- document.removeEventListener('readystatechange', onReadyStateChange_1);
- readyStateCompleteListeners.forEach(function (listener) { return listener(); });
- readyStateCompleteListeners.clear();
- }
- }
- };
- document.addEventListener('readystatechange', onReadyStateChange_1);
- }
- var HUGE_MUTATIONS_COUNT = 1000;
- function isHugeMutation(mutations) {
- if (mutations.length > HUGE_MUTATIONS_COUNT) {
- return true;
- }
- var addedNodesCount = 0;
- for (var i = 0; i < mutations.length; i++) {
- addedNodesCount += mutations[i].addedNodes.length;
- if (addedNodesCount > HUGE_MUTATIONS_COUNT) {
- return true;
- }
- }
- return false;
- }
- function getElementsTreeOperations(mutations) {
- var additions = new Set();
- var deletions = new Set();
- var moves = new Set();
- mutations.forEach(function (m) {
- forEach(m.addedNodes, function (n) {
- if (n instanceof Element && n.isConnected) {
- additions.add(n);
- }
- });
- forEach(m.removedNodes, function (n) {
- if (n instanceof Element) {
- if (n.isConnected) {
- moves.add(n);
- additions.delete(n);
- }
- else {
- deletions.add(n);
- }
- }
- });
- });
- var duplicateAdditions = [];
- var duplicateDeletions = [];
- additions.forEach(function (node) {
- if (additions.has(node.parentElement)) {
- duplicateAdditions.push(node);
- }
- });
- deletions.forEach(function (node) {
- if (deletions.has(node.parentElement)) {
- duplicateDeletions.push(node);
- }
- });
- duplicateAdditions.forEach(function (node) { return additions.delete(node); });
- duplicateDeletions.forEach(function (node) { return deletions.delete(node); });
- return { additions: additions, moves: moves, deletions: deletions };
- }
- var optimizedTreeObservers = new Map();
- var optimizedTreeCallbacks = new WeakMap();
- function createOptimizedTreeObserver(root, callbacks) {
- var observer;
- var observerCallbacks;
- var domReadyListener;
- if (optimizedTreeObservers.has(root)) {
- observer = optimizedTreeObservers.get(root);
- observerCallbacks = optimizedTreeCallbacks.get(observer);
- }
- else {
- var hadHugeMutationsBefore_1 = false;
- var subscribedForReadyState_1 = false;
- observer = new MutationObserver(function (mutations) {
- if (isHugeMutation(mutations)) {
- if (!hadHugeMutationsBefore_1 || isDOMReady()) {
- observerCallbacks.forEach(function (_a) {
- var onHugeMutations = _a.onHugeMutations;
- return onHugeMutations(root);
- });
- }
- else if (!subscribedForReadyState_1) {
- domReadyListener = function () { return observerCallbacks.forEach(function (_a) {
- var onHugeMutations = _a.onHugeMutations;
- return onHugeMutations(root);
- }); };
- addDOMReadyListener(domReadyListener);
- subscribedForReadyState_1 = true;
- }
- hadHugeMutationsBefore_1 = true;
- }
- else {
- var elementsOperations_1 = getElementsTreeOperations(mutations);
- observerCallbacks.forEach(function (_a) {
- var onMinorMutations = _a.onMinorMutations;
- return onMinorMutations(elementsOperations_1);
- });
- }
- });
- observer.observe(root, { childList: true, subtree: true });
- optimizedTreeObservers.set(root, observer);
- observerCallbacks = new Set();
- optimizedTreeCallbacks.set(observer, observerCallbacks);
- }
- observerCallbacks.add(callbacks);
- return {
- disconnect: function () {
- observerCallbacks.delete(callbacks);
- if (domReadyListener) {
- removeDOMReadyListener(domReadyListener);
- }
- if (observerCallbacks.size === 0) {
- observer.disconnect();
- optimizedTreeCallbacks.delete(observer);
- optimizedTreeObservers.delete(root);
- }
- },
- };
- }
- var anchor;
- var parsedURLCache = new Map();
- function fixBaseURL($url) {
- if (!anchor) {
- anchor = document.createElement('a');
- }
- anchor.href = $url;
- return anchor.href;
- }
- function parseURL($url, $base) {
- if ($base === void 0) { $base = null; }
- var key = "".concat($url).concat($base ? ";".concat($base) : '');
- if (parsedURLCache.has(key)) {
- return parsedURLCache.get(key);
- }
- if ($base) {
- var parsedURL_1 = new URL($url, fixBaseURL($base));
- parsedURLCache.set(key, parsedURL_1);
- return parsedURL_1;
- }
- var parsedURL = new URL(fixBaseURL($url));
- parsedURLCache.set($url, parsedURL);
- return parsedURL;
- }
- function getAbsoluteURL($base, $relative) {
- if ($relative.match(/^data\\?\:/)) {
- return $relative;
- }
- if (/^\/\//.test($relative)) {
- return "".concat(location.protocol).concat($relative);
- }
- var b = parseURL($base);
- var a = parseURL($relative, b.href);
- return a.href;
- }
- function isRelativeHrefOnAbsolutePath(href) {
- if (href.startsWith('data:')) {
- return true;
- }
- var url = parseURL(href);
- if (url.protocol !== location.protocol) {
- return false;
- }
- if (url.hostname !== location.hostname) {
- return false;
- }
- if (url.port !== location.port) {
- return false;
- }
- return url.pathname === location.pathname;
- }
- function iterateCSSRules(rules, iterate, onMediaRuleError) {
- forEach(rules, function (rule) {
- if (rule.selectorText) {
- iterate(rule);
- }
- else if (rule.href) {
- try {
- iterateCSSRules(rule.styleSheet.cssRules, iterate, onMediaRuleError);
- }
- catch (err) {
- logInfo("Found a non-loaded link.");
- onMediaRuleError && onMediaRuleError();
- }
- }
- else if (rule.media) {
- var media = Array.from(rule.media);
- var isScreenOrAllOrQuery = media.some(function (m) { return m.startsWith('screen') || m.startsWith('all') || m.startsWith('('); });
- var isPrintOrSpeech = media.some(function (m) { return m.startsWith('print') || m.startsWith('speech'); });
- if (isScreenOrAllOrQuery || !isPrintOrSpeech) {
- iterateCSSRules(rule.cssRules, iterate, onMediaRuleError);
- }
- }
- else if (rule.conditionText) {
- if (CSS.supports(rule.conditionText)) {
- iterateCSSRules(rule.cssRules, iterate, onMediaRuleError);
- }
- }
- else {
- logWarn("CSSRule type not supported", rule);
- }
- });
- }
- var shorthandVarDependantProperties = [
- 'background',
- 'border',
- 'border-color',
- 'border-bottom',
- 'border-left',
- 'border-right',
- 'border-top',
- 'outline',
- 'outline-color',
- ];
- var shorthandVarDepPropRegexps = isSafari ? shorthandVarDependantProperties.map(function (prop) {
- var regexp = new RegExp("".concat(prop, ":\\s*(.*?)\\s*;"));
- return [prop, regexp];
- }) : null;
- function iterateCSSDeclarations(style, iterate) {
- forEach(style, function (property) {
- var value = style.getPropertyValue(property).trim();
- if (!value) {
- return;
- }
- iterate(property, value);
- });
- var cssText = style.cssText;
- if (cssText.includes('var(')) {
- if (isSafari) {
- shorthandVarDepPropRegexps.forEach(function (_a) {
- var _b = __read(_a, 2), prop = _b[0], regexp = _b[1];
- var match = cssText.match(regexp);
- if (match && match[1]) {
- var val = match[1].trim();
- iterate(prop, val);
- }
- });
- }
- else {
- shorthandVarDependantProperties.forEach(function (prop) {
- var val = style.getPropertyValue(prop);
- if (val && val.includes('var(')) {
- iterate(prop, val);
- }
- });
- }
- }
- }
- var cssURLRegex = /url\((('.+?')|(".+?")|([^\)]*?))\)/g;
- var cssImportRegex = /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi;
- function getCSSURLValue(cssURL) {
- return cssURL.trim().replace(/^url\((.*)\)$/, '$1').trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1');
- }
- function getCSSBaseBath(url) {
- var cssURL = parseURL(url);
- return "".concat(cssURL.origin).concat(cssURL.pathname.replace(/\?.*$/, '').replace(/(\/)([^\/]+)$/i, '$1'));
- }
- function replaceCSSRelativeURLsWithAbsolute($css, cssBasePath) {
- return $css.replace(cssURLRegex, function (match) {
- var pathValue = getCSSURLValue(match);
- try {
- return "url(\"".concat(getAbsoluteURL(cssBasePath, pathValue), "\")");
- }
- catch (err) {
- logWarn('Not able to replace relative URL with Absolute URL, skipping');
- return match;
- }
- });
- }
- var cssCommentsRegex = /\/\*[\s\S]*?\*\//g;
- function removeCSSComments($css) {
- return $css.replace(cssCommentsRegex, '');
- }
- var fontFaceRegex = /@font-face\s*{[^}]*}/g;
- function replaceCSSFontFace($css) {
- return $css.replace(fontFaceRegex, '');
- }
- function evalMath(expression) {
- var rpnStack = [];
- var workingStack = [];
- var lastToken;
- for (var i = 0, len = expression.length; i < len; i++) {
- var token = expression[i];
- if (!token || token === ' ') {
- continue;
- }
- if (operators.has(token)) {
- var op = operators.get(token);
- while (workingStack.length) {
- var currentOp = operators.get(workingStack[0]);
- if (!currentOp) {
- break;
- }
- if (op.lessOrEqualThan(currentOp)) {
- rpnStack.push(workingStack.shift());
- }
- else {
- break;
- }
- }
- workingStack.unshift(token);
- }
- else if (!lastToken || operators.has(lastToken)) {
- rpnStack.push(token);
- }
- else {
- rpnStack[rpnStack.length - 1] += token;
- }
- lastToken = token;
- }
- rpnStack.push.apply(rpnStack, __spreadArray([], __read(workingStack), false));
- var stack = [];
- for (var i = 0, len = rpnStack.length; i < len; i++) {
- var op = operators.get(rpnStack[i]);
- if (op) {
- var args = stack.splice(0, 2);
- stack.push(op.exec(args[1], args[0]));
- }
- else {
- stack.unshift(parseFloat(rpnStack[i]));
- }
- }
- return stack[0];
- }
- var Operator = (function () {
- function Operator(precedence, method) {
- this.precendce = precedence;
- this.execMethod = method;
- }
- Operator.prototype.exec = function (left, right) {
- return this.execMethod(left, right);
- };
- Operator.prototype.lessOrEqualThan = function (op) {
- return this.precendce <= op.precendce;
- };
- return Operator;
- }());
- var operators = new Map([
- ['+', new Operator(1, function (left, right) { return left + right; })],
- ['-', new Operator(1, function (left, right) { return left - right; })],
- ['*', new Operator(2, function (left, right) { return left * right; })],
- ['/', new Operator(2, function (left, right) { return left / right; })],
- ]);
- function getMatches(regex, input, group) {
- if (group === void 0) { group = 0; }
- var matches = [];
- var m;
- while ((m = regex.exec(input))) {
- matches.push(m[group]);
- }
- return matches;
- }
- function formatCSS(text) {
- function trimLeft(text) {
- return text.replace(/^\s+/, '');
- }
- function getIndent(depth) {
- if (depth === 0) {
- return '';
- }
- return ' '.repeat(4 * depth);
- }
- if (text.length < 50000) {
- var emptyRuleRegexp = /[^{}]+{\s*}/;
- while (emptyRuleRegexp.test(text)) {
- text = text.replace(emptyRuleRegexp, '');
- }
- }
- var css = (text
- .replace(/\s{2,}/g, ' ')
- .replace(/\{/g, '{\n')
- .replace(/\}/g, '\n}\n')
- .replace(/\;(?![^\(|\"]*(\)|\"))/g, ';\n')
- .replace(/\,(?![^\(|\"]*(\)|\"))/g, ',\n')
- .replace(/\n\s*\n/g, '\n')
- .split('\n'));
- var depth = 0;
- var formatted = [];
- for (var x = 0, len = css.length; x < len; x++) {
- var line = "".concat(css[x], "\n");
- if (line.includes('{')) {
- formatted.push(getIndent(depth++) + trimLeft(line));
- }
- else if (line.includes('\}')) {
- formatted.push(getIndent(--depth) + trimLeft(line));
- }
- else {
- formatted.push(getIndent(depth) + trimLeft(line));
- }
- }
- return formatted.join('').trim();
- }
- function getParenthesesRange(input, searchStartIndex) {
- if (searchStartIndex === void 0) { searchStartIndex = 0; }
- var length = input.length;
- var depth = 0;
- var firstOpenIndex = -1;
- for (var i = searchStartIndex; i < length; i++) {
- if (depth === 0) {
- var openIndex = input.indexOf('(', i);
- if (openIndex < 0) {
- break;
- }
- firstOpenIndex = openIndex;
- depth++;
- i = openIndex;
- }
- else {
- var closingIndex = input.indexOf(')', i);
- if (closingIndex < 0) {
- break;
- }
- var openIndex = input.indexOf('(', i);
- if (openIndex < 0 || closingIndex < openIndex) {
- depth--;
- if (depth === 0) {
- return { start: firstOpenIndex, end: closingIndex + 1 };
- }
- i = closingIndex;
- }
- else {
- depth++;
- i = openIndex;
- }
- }
- }
- return null;
- }
- function hslToRGB(_a) {
- var h = _a.h, s = _a.s, l = _a.l, _b = _a.a, a = _b === void 0 ? 1 : _b;
- if (s === 0) {
- var _c = __read([l, l, l].map(function (x) { return Math.round(x * 255); }), 3), r_1 = _c[0], b_1 = _c[1], g_1 = _c[2];
- return { r: r_1, g: g_1, b: b_1, a: a };
- }
- var c = (1 - Math.abs(2 * l - 1)) * s;
- var x = c * (1 - Math.abs((h / 60) % 2 - 1));
- var m = l - c / 2;
- var _d = __read((h < 60 ? [c, x, 0] :
- h < 120 ? [x, c, 0] :
- h < 180 ? [0, c, x] :
- h < 240 ? [0, x, c] :
- h < 300 ? [x, 0, c] :
- [c, 0, x]).map(function (n) { return Math.round((n + m) * 255); }), 3), r = _d[0], g = _d[1], b = _d[2];
- return { r: r, g: g, b: b, a: a };
- }
- function rgbToHSL(_a) {
- var r255 = _a.r, g255 = _a.g, b255 = _a.b, _b = _a.a, a = _b === void 0 ? 1 : _b;
- var r = r255 / 255;
- var g = g255 / 255;
- var b = b255 / 255;
- var max = Math.max(r, g, b);
- var min = Math.min(r, g, b);
- var c = max - min;
- var l = (max + min) / 2;
- if (c === 0) {
- return { h: 0, s: 0, l: l, a: a };
- }
- var h = (max === r ? (((g - b) / c) % 6) :
- max === g ? ((b - r) / c + 2) :
- ((r - g) / c + 4)) * 60;
- if (h < 0) {
- h += 360;
- }
- var s = c / (1 - Math.abs(2 * l - 1));
- return { h: h, s: s, l: l, a: a };
- }
- function toFixed(n, digits) {
- if (digits === void 0) { digits = 0; }
- var fixed = n.toFixed(digits);
- if (digits === 0) {
- return fixed;
- }
- var dot = fixed.indexOf('.');
- if (dot >= 0) {
- var zerosMatch = fixed.match(/0+$/);
- if (zerosMatch) {
- if (zerosMatch.index === dot + 1) {
- return fixed.substring(0, dot);
- }
- return fixed.substring(0, zerosMatch.index);
- }
- }
- return fixed;
- }
- function rgbToString(rgb) {
- var r = rgb.r, g = rgb.g, b = rgb.b, a = rgb.a;
- if (a != null && a < 1) {
- return "rgba(".concat(toFixed(r), ", ").concat(toFixed(g), ", ").concat(toFixed(b), ", ").concat(toFixed(a, 2), ")");
- }
- return "rgb(".concat(toFixed(r), ", ").concat(toFixed(g), ", ").concat(toFixed(b), ")");
- }
- function rgbToHexString(_a) {
- var r = _a.r, g = _a.g, b = _a.b, a = _a.a;
- return "#".concat((a != null && a < 1 ? [r, g, b, Math.round(a * 255)] : [r, g, b]).map(function (x) {
- return "".concat(x < 16 ? '0' : '').concat(x.toString(16));
- }).join(''));
- }
- function hslToString(hsl) {
- var h = hsl.h, s = hsl.s, l = hsl.l, a = hsl.a;
- if (a != null && a < 1) {
- return "hsla(".concat(toFixed(h), ", ").concat(toFixed(s * 100), "%, ").concat(toFixed(l * 100), "%, ").concat(toFixed(a, 2), ")");
- }
- return "hsl(".concat(toFixed(h), ", ").concat(toFixed(s * 100), "%, ").concat(toFixed(l * 100), "%)");
- }
- var rgbMatch = /^rgba?\([^\(\)]+\)$/;
- var hslMatch = /^hsla?\([^\(\)]+\)$/;
- var hexMatch = /^#[0-9a-f]+$/i;
- function parse($color) {
- var c = $color.trim().toLowerCase();
- if (c.match(rgbMatch)) {
- return parseRGB(c);
- }
- if (c.match(hslMatch)) {
- return parseHSL(c);
- }
- if (c.match(hexMatch)) {
- return parseHex(c);
- }
- if (knownColors.has(c)) {
- return getColorByName(c);
- }
- if (systemColors.has(c)) {
- return getSystemColor(c);
- }
- if ($color === 'transparent') {
- return { r: 0, g: 0, b: 0, a: 0 };
- }
- throw new Error("Unable to parse ".concat($color));
- }
- function getNumbers($color) {
- var numbers = [];
- var prevPos = 0;
- var isMining = false;
- var startIndex = $color.indexOf('(');
- $color = $color.substring(startIndex + 1, $color.length - 1);
- for (var i = 0; i < $color.length; i++) {
- var c = $color[i];
- if (c >= '0' && c <= '9' || c === '.' || c === '+' || c === '-') {
- isMining = true;
- }
- else if (isMining && (c === ' ' || c === ',')) {
- numbers.push($color.substring(prevPos, i));
- isMining = false;
- prevPos = i + 1;
- }
- else if (!isMining) {
- prevPos = i + 1;
- }
- }
- if (isMining) {
- numbers.push($color.substring(prevPos, $color.length));
- }
- return numbers;
- }
- function getNumbersFromString(str, range, units) {
- var raw = getNumbers(str);
- var unitsList = Object.entries(units);
- var numbers = raw.map(function (r) { return r.trim(); }).map(function (r, i) {
- var n;
- var unit = unitsList.find(function (_a) {
- var _b = __read(_a, 1), u = _b[0];
- return r.endsWith(u);
- });
- if (unit) {
- n = parseFloat(r.substring(0, r.length - unit[0].length)) / unit[1] * range[i];
- }
- else {
- n = parseFloat(r);
- }
- if (range[i] > 1) {
- return Math.round(n);
- }
- return n;
- });
- return numbers;
- }
- var rgbRange = [255, 255, 255, 1];
- var rgbUnits = { '%': 100 };
- function parseRGB($rgb) {
- var _a = __read(getNumbersFromString($rgb, rgbRange, rgbUnits), 4), r = _a[0], g = _a[1], b = _a[2], _b = _a[3], a = _b === void 0 ? 1 : _b;
- return { r: r, g: g, b: b, a: a };
- }
- var hslRange = [360, 1, 1, 1];
- var hslUnits = { '%': 100, 'deg': 360, 'rad': 2 * Math.PI, 'turn': 1 };
- function parseHSL($hsl) {
- var _a = __read(getNumbersFromString($hsl, hslRange, hslUnits), 4), h = _a[0], s = _a[1], l = _a[2], _b = _a[3], a = _b === void 0 ? 1 : _b;
- return hslToRGB({ h: h, s: s, l: l, a: a });
- }
- function parseHex($hex) {
- var h = $hex.substring(1);
- switch (h.length) {
- case 3:
- case 4: {
- var _a = __read([0, 1, 2].map(function (i) { return parseInt("".concat(h[i]).concat(h[i]), 16); }), 3), r = _a[0], g = _a[1], b = _a[2];
- var a = h.length === 3 ? 1 : (parseInt("".concat(h[3]).concat(h[3]), 16) / 255);
- return { r: r, g: g, b: b, a: a };
- }
- case 6:
- case 8: {
- var _b = __read([0, 2, 4].map(function (i) { return parseInt(h.substring(i, i + 2), 16); }), 3), r = _b[0], g = _b[1], b = _b[2];
- var a = h.length === 6 ? 1 : (parseInt(h.substring(6, 8), 16) / 255);
- return { r: r, g: g, b: b, a: a };
- }
- }
- throw new Error("Unable to parse ".concat($hex));
- }
- function getColorByName($color) {
- var n = knownColors.get($color);
- return {
- r: (n >> 16) & 255,
- g: (n >> 8) & 255,
- b: (n >> 0) & 255,
- a: 1
- };
- }
- function getSystemColor($color) {
- var n = systemColors.get($color);
- return {
- r: (n >> 16) & 255,
- g: (n >> 8) & 255,
- b: (n >> 0) & 255,
- a: 1
- };
- }
- function lowerCalcExpression(color) {
- var searchIndex = 0;
- var replaceBetweenIndices = function (start, end, replacement) {
- color = color.substring(0, start) + replacement + color.substring(end);
- };
- while ((searchIndex = color.indexOf('calc(')) !== -1) {
- var range = getParenthesesRange(color, searchIndex);
- if (!range) {
- break;
- }
- var slice = color.slice(range.start + 1, range.end - 1);
- var includesPercentage = slice.includes('%');
- slice = slice.split('%').join('');
- var output = Math.round(evalMath(slice));
- replaceBetweenIndices(range.start - 4, range.end, output + (includesPercentage ? '%' : ''));
- }
- return color;
- }
- var knownColors = new Map(Object.entries({
- aliceblue: 0xf0f8ff,
- antiquewhite: 0xfaebd7,
- aqua: 0x00ffff,
- aquamarine: 0x7fffd4,
- azure: 0xf0ffff,
- beige: 0xf5f5dc,
- bisque: 0xffe4c4,
- black: 0x000000,
- blanchedalmond: 0xffebcd,
- blue: 0x0000ff,
- blueviolet: 0x8a2be2,
- brown: 0xa52a2a,
- burlywood: 0xdeb887,
- cadetblue: 0x5f9ea0,
- chartreuse: 0x7fff00,
- chocolate: 0xd2691e,
- coral: 0xff7f50,
- cornflowerblue: 0x6495ed,
- cornsilk: 0xfff8dc,
- crimson: 0xdc143c,
- cyan: 0x00ffff,
- darkblue: 0x00008b,
- darkcyan: 0x008b8b,
- darkgoldenrod: 0xb8860b,
- darkgray: 0xa9a9a9,
- darkgrey: 0xa9a9a9,
- darkgreen: 0x006400,
- darkkhaki: 0xbdb76b,
- darkmagenta: 0x8b008b,
- darkolivegreen: 0x556b2f,
- darkorange: 0xff8c00,
- darkorchid: 0x9932cc,
- darkred: 0x8b0000,
- darksalmon: 0xe9967a,
- darkseagreen: 0x8fbc8f,
- darkslateblue: 0x483d8b,
- darkslategray: 0x2f4f4f,
- darkslategrey: 0x2f4f4f,
- darkturquoise: 0x00ced1,
- darkviolet: 0x9400d3,
- deeppink: 0xff1493,
- deepskyblue: 0x00bfff,
- dimgray: 0x696969,
- dimgrey: 0x696969,
- dodgerblue: 0x1e90ff,
- firebrick: 0xb22222,
- floralwhite: 0xfffaf0,
- forestgreen: 0x228b22,
- fuchsia: 0xff00ff,
- gainsboro: 0xdcdcdc,
- ghostwhite: 0xf8f8ff,
- gold: 0xffd700,
- goldenrod: 0xdaa520,
- gray: 0x808080,
- grey: 0x808080,
- green: 0x008000,
- greenyellow: 0xadff2f,
- honeydew: 0xf0fff0,
- hotpink: 0xff69b4,
- indianred: 0xcd5c5c,
- indigo: 0x4b0082,
- ivory: 0xfffff0,
- khaki: 0xf0e68c,
- lavender: 0xe6e6fa,
- lavenderblush: 0xfff0f5,
- lawngreen: 0x7cfc00,
- lemonchiffon: 0xfffacd,
- lightblue: 0xadd8e6,
- lightcoral: 0xf08080,
- lightcyan: 0xe0ffff,
- lightgoldenrodyellow: 0xfafad2,
- lightgray: 0xd3d3d3,
- lightgrey: 0xd3d3d3,
- lightgreen: 0x90ee90,
- lightpink: 0xffb6c1,
- lightsalmon: 0xffa07a,
- lightseagreen: 0x20b2aa,
- lightskyblue: 0x87cefa,
- lightslategray: 0x778899,
- lightslategrey: 0x778899,
- lightsteelblue: 0xb0c4de,
- lightyellow: 0xffffe0,
- lime: 0x00ff00,
- limegreen: 0x32cd32,
- linen: 0xfaf0e6,
- magenta: 0xff00ff,
- maroon: 0x800000,
- mediumaquamarine: 0x66cdaa,
- mediumblue: 0x0000cd,
- mediumorchid: 0xba55d3,
- mediumpurple: 0x9370db,
- mediumseagreen: 0x3cb371,
- mediumslateblue: 0x7b68ee,
- mediumspringgreen: 0x00fa9a,
- mediumturquoise: 0x48d1cc,
- mediumvioletred: 0xc71585,
- midnightblue: 0x191970,
- mintcream: 0xf5fffa,
- mistyrose: 0xffe4e1,
- moccasin: 0xffe4b5,
- navajowhite: 0xffdead,
- navy: 0x000080,
- oldlace: 0xfdf5e6,
- olive: 0x808000,
- olivedrab: 0x6b8e23,
- orange: 0xffa500,
- orangered: 0xff4500,
- orchid: 0xda70d6,
- palegoldenrod: 0xeee8aa,
- palegreen: 0x98fb98,
- paleturquoise: 0xafeeee,
- palevioletred: 0xdb7093,
- papayawhip: 0xffefd5,
- peachpuff: 0xffdab9,
- peru: 0xcd853f,
- pink: 0xffc0cb,
- plum: 0xdda0dd,
- powderblue: 0xb0e0e6,
- purple: 0x800080,
- rebeccapurple: 0x663399,
- red: 0xff0000,
- rosybrown: 0xbc8f8f,
- royalblue: 0x4169e1,
- saddlebrown: 0x8b4513,
- salmon: 0xfa8072,
- sandybrown: 0xf4a460,
- seagreen: 0x2e8b57,
- seashell: 0xfff5ee,
- sienna: 0xa0522d,
- silver: 0xc0c0c0,
- skyblue: 0x87ceeb,
- slateblue: 0x6a5acd,
- slategray: 0x708090,
- slategrey: 0x708090,
- snow: 0xfffafa,
- springgreen: 0x00ff7f,
- steelblue: 0x4682b4,
- tan: 0xd2b48c,
- teal: 0x008080,
- thistle: 0xd8bfd8,
- tomato: 0xff6347,
- turquoise: 0x40e0d0,
- violet: 0xee82ee,
- wheat: 0xf5deb3,
- white: 0xffffff,
- whitesmoke: 0xf5f5f5,
- yellow: 0xffff00,
- yellowgreen: 0x9acd32,
- }));
- var systemColors = new Map(Object.entries({
- ActiveBorder: 0x3b99fc,
- ActiveCaption: 0x000000,
- AppWorkspace: 0xaaaaaa,
- Background: 0x6363ce,
- ButtonFace: 0xffffff,
- ButtonHighlight: 0xe9e9e9,
- ButtonShadow: 0x9fa09f,
- ButtonText: 0x000000,
- CaptionText: 0x000000,
- GrayText: 0x7f7f7f,
- Highlight: 0xb2d7ff,
- HighlightText: 0x000000,
- InactiveBorder: 0xffffff,
- InactiveCaption: 0xffffff,
- InactiveCaptionText: 0x000000,
- InfoBackground: 0xfbfcc5,
- InfoText: 0x000000,
- Menu: 0xf6f6f6,
- MenuText: 0xffffff,
- Scrollbar: 0xaaaaaa,
- ThreeDDarkShadow: 0x000000,
- ThreeDFace: 0xc0c0c0,
- ThreeDHighlight: 0xffffff,
- ThreeDLightShadow: 0xffffff,
- ThreeDShadow: 0x000000,
- Window: 0xececec,
- WindowFrame: 0xaaaaaa,
- WindowText: 0x000000,
- '-webkit-focus-ring-color': 0xe59700
- }).map(function (_a) {
- var _b = __read(_a, 2), key = _b[0], value = _b[1];
- return [key.toLowerCase(), value];
- }));
- function getSRGBLightness(r, g, b) {
- return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255;
- }
- function scale(x, inLow, inHigh, outLow, outHigh) {
- return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
- }
- function clamp(x, min, max) {
- return Math.min(max, Math.max(min, x));
- }
- function multiplyMatrices(m1, m2) {
- var result = [];
- for (var i = 0, len = m1.length; i < len; i++) {
- result[i] = [];
- for (var j = 0, len2 = m2[0].length; j < len2; j++) {
- var sum = 0;
- for (var k = 0, len3 = m1[0].length; k < len3; k++) {
- sum += m1[i][k] * m2[k][j];
- }
- result[i][j] = sum;
- }
- }
- return result;
- }
- function createFilterMatrix(config) {
- var m = Matrix.identity();
- if (config.sepia !== 0) {
- m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100));
- }
- if (config.grayscale !== 0) {
- m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100));
- }
- if (config.contrast !== 100) {
- m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100));
- }
- if (config.brightness !== 100) {
- m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100));
- }
- if (config.mode === 1) {
- m = multiplyMatrices(m, Matrix.invertNHue());
- }
- return m;
- }
- function applyColorMatrix(_a, matrix) {
- var _b = __read(_a, 3), r = _b[0], g = _b[1], b = _b[2];
- var rgb = [[r / 255], [g / 255], [b / 255], [1], [1]];
- var result = multiplyMatrices(matrix, rgb);
- return [0, 1, 2].map(function (i) { return clamp(Math.round(result[i][0] * 255), 0, 255); });
- }
- var Matrix = {
- identity: function () {
- return [
- [1, 0, 0, 0, 0],
- [0, 1, 0, 0, 0],
- [0, 0, 1, 0, 0],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 1]
- ];
- },
- invertNHue: function () {
- return [
- [0.333, -0.667, -0.667, 0, 1],
- [-0.667, 0.333, -0.667, 0, 1],
- [-0.667, -0.667, 0.333, 0, 1],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 1]
- ];
- },
- brightness: function (v) {
- return [
- [v, 0, 0, 0, 0],
- [0, v, 0, 0, 0],
- [0, 0, v, 0, 0],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 1]
- ];
- },
- contrast: function (v) {
- var t = (1 - v) / 2;
- return [
- [v, 0, 0, 0, t],
- [0, v, 0, 0, t],
- [0, 0, v, 0, t],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 1]
- ];
- },
- sepia: function (v) {
- return [
- [(0.393 + 0.607 * (1 - v)), (0.769 - 0.769 * (1 - v)), (0.189 - 0.189 * (1 - v)), 0, 0],
- [(0.349 - 0.349 * (1 - v)), (0.686 + 0.314 * (1 - v)), (0.168 - 0.168 * (1 - v)), 0, 0],
- [(0.272 - 0.272 * (1 - v)), (0.534 - 0.534 * (1 - v)), (0.131 + 0.869 * (1 - v)), 0, 0],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 1]
- ];
- },
- grayscale: function (v) {
- return [
- [(0.2126 + 0.7874 * (1 - v)), (0.7152 - 0.7152 * (1 - v)), (0.0722 - 0.0722 * (1 - v)), 0, 0],
- [(0.2126 - 0.2126 * (1 - v)), (0.7152 + 0.2848 * (1 - v)), (0.0722 - 0.0722 * (1 - v)), 0, 0],
- [(0.2126 - 0.2126 * (1 - v)), (0.7152 - 0.7152 * (1 - v)), (0.0722 + 0.9278 * (1 - v)), 0, 0],
- [0, 0, 0, 1, 0],
- [0, 0, 0, 0, 1]
- ];
- },
- };
- function getBgPole(theme) {
- var isDarkScheme = theme.mode === 1;
- var prop = isDarkScheme ? 'darkSchemeBackgroundColor' : 'lightSchemeBackgroundColor';
- return theme[prop];
- }
- function getFgPole(theme) {
- var isDarkScheme = theme.mode === 1;
- var prop = isDarkScheme ? 'darkSchemeTextColor' : 'lightSchemeTextColor';
- return theme[prop];
- }
- var colorModificationCache = new Map();
- var colorParseCache$1 = new Map();
- function parseToHSLWithCache(color) {
- if (colorParseCache$1.has(color)) {
- return colorParseCache$1.get(color);
- }
- var rgb = parse(color);
- var hsl = rgbToHSL(rgb);
- colorParseCache$1.set(color, hsl);
- return hsl;
- }
- function clearColorModificationCache() {
- colorModificationCache.clear();
- colorParseCache$1.clear();
- }
- var rgbCacheKeys = ['r', 'g', 'b', 'a'];
- var themeCacheKeys$1 = ['mode', 'brightness', 'contrast', 'grayscale', 'sepia', 'darkSchemeBackgroundColor', 'darkSchemeTextColor', 'lightSchemeBackgroundColor', 'lightSchemeTextColor'];
- function getCacheId(rgb, theme) {
- var resultId = '';
- rgbCacheKeys.forEach(function (key) {
- resultId += "".concat(rgb[key], ";");
- });
- themeCacheKeys$1.forEach(function (key) {
- resultId += "".concat(theme[key], ";");
- });
- return resultId;
- }
- function modifyColorWithCache(rgb, theme, modifyHSL, poleColor, anotherPoleColor) {
- var fnCache;
- if (colorModificationCache.has(modifyHSL)) {
- fnCache = colorModificationCache.get(modifyHSL);
- }
- else {
- fnCache = new Map();
- colorModificationCache.set(modifyHSL, fnCache);
- }
- var id = getCacheId(rgb, theme);
- if (fnCache.has(id)) {
- return fnCache.get(id);
- }
- var hsl = rgbToHSL(rgb);
- var pole = poleColor == null ? null : parseToHSLWithCache(poleColor);
- var anotherPole = anotherPoleColor == null ? null : parseToHSLWithCache(anotherPoleColor);
- var modified = modifyHSL(hsl, pole, anotherPole);
- var _a = hslToRGB(modified), r = _a.r, g = _a.g, b = _a.b, a = _a.a;
- var matrix = createFilterMatrix(theme);
- var _b = __read(applyColorMatrix([r, g, b], matrix), 3), rf = _b[0], gf = _b[1], bf = _b[2];
- var color = (a === 1 ?
- rgbToHexString({ r: rf, g: gf, b: bf }) :
- rgbToString({ r: rf, g: gf, b: bf, a: a }));
- fnCache.set(id, color);
- return color;
- }
- function noopHSL(hsl) {
- return hsl;
- }
- function modifyColor(rgb, theme) {
- return modifyColorWithCache(rgb, theme, noopHSL);
- }
- function modifyLightSchemeColor(rgb, theme) {
- var poleBg = getBgPole(theme);
- var poleFg = getFgPole(theme);
- return modifyColorWithCache(rgb, theme, modifyLightModeHSL, poleFg, poleBg);
- }
- function modifyLightModeHSL(_a, poleFg, poleBg) {
- var h = _a.h, s = _a.s, l = _a.l, a = _a.a;
- var isDark = l < 0.5;
- var isNeutral;
- if (isDark) {
- isNeutral = l < 0.2 || s < 0.12;
- }
- else {
- var isBlue = h > 200 && h < 280;
- isNeutral = s < 0.24 || (l > 0.8 && isBlue);
- }
- var hx = h;
- var sx = l;
- if (isNeutral) {
- if (isDark) {
- hx = poleFg.h;
- sx = poleFg.s;
- }
- else {
- hx = poleBg.h;
- sx = poleBg.s;
- }
- }
- var lx = scale(l, 0, 1, poleFg.l, poleBg.l);
- return { h: hx, s: sx, l: lx, a: a };
- }
- var MAX_BG_LIGHTNESS = 0.4;
- function modifyBgHSL(_a, pole) {
- var h = _a.h, s = _a.s, l = _a.l, a = _a.a;
- var isDark = l < 0.5;
- var isBlue = h > 200 && h < 280;
- var isNeutral = s < 0.12 || (l > 0.8 && isBlue);
- if (isDark) {
- var lx_1 = scale(l, 0, 0.5, 0, MAX_BG_LIGHTNESS);
- if (isNeutral) {
- var hx_1 = pole.h;
- var sx = pole.s;
- return { h: hx_1, s: sx, l: lx_1, a: a };
- }
- return { h: h, s: s, l: lx_1, a: a };
- }
- var lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l);
- if (isNeutral) {
- var hx_2 = pole.h;
- var sx = pole.s;
- return { h: hx_2, s: sx, l: lx, a: a };
- }
- var hx = h;
- var isYellow = h > 60 && h < 180;
- if (isYellow) {
- var isCloserToGreen = h > 120;
- if (isCloserToGreen) {
- hx = scale(h, 120, 180, 135, 180);
- }
- else {
- hx = scale(h, 60, 120, 60, 105);
- }
- }
- if (hx > 40 && hx < 80) {
- lx *= 0.75;
- }
- return { h: hx, s: s, l: lx, a: a };
- }
- function modifyBackgroundColor(rgb, theme) {
- if (theme.mode === 0) {
- return modifyLightSchemeColor(rgb, theme);
- }
- var pole = getBgPole(theme);
- return modifyColorWithCache(rgb, __assign(__assign({}, theme), { mode: 0 }), modifyBgHSL, pole);
- }
- var MIN_FG_LIGHTNESS = 0.55;
- function modifyBlueFgHue(hue) {
- return scale(hue, 205, 245, 205, 220);
- }
- function modifyFgHSL(_a, pole) {
- var h = _a.h, s = _a.s, l = _a.l, a = _a.a;
- var isLight = l > 0.5;
- var isNeutral = l < 0.2 || s < 0.24;
- var isBlue = !isNeutral && h > 205 && h < 245;
- if (isLight) {
- var lx_2 = scale(l, 0.5, 1, MIN_FG_LIGHTNESS, pole.l);
- if (isNeutral) {
- var hx_3 = pole.h;
- var sx = pole.s;
- return { h: hx_3, s: sx, l: lx_2, a: a };
- }
- var hx_4 = h;
- if (isBlue) {
- hx_4 = modifyBlueFgHue(h);
- }
- return { h: hx_4, s: s, l: lx_2, a: a };
- }
- if (isNeutral) {
- var hx_5 = pole.h;
- var sx = pole.s;
- var lx_3 = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS);
- return { h: hx_5, s: sx, l: lx_3, a: a };
- }
- var hx = h;
- var lx;
- if (isBlue) {
- hx = modifyBlueFgHue(h);
- lx = scale(l, 0, 0.5, pole.l, Math.min(1, MIN_FG_LIGHTNESS + 0.05));
- }
- else {
- lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS);
- }
- return { h: hx, s: s, l: lx, a: a };
- }
- function modifyForegroundColor(rgb, theme) {
- if (theme.mode === 0) {
- return modifyLightSchemeColor(rgb, theme);
- }
- var pole = getFgPole(theme);
- return modifyColorWithCache(rgb, __assign(__assign({}, theme), { mode: 0 }), modifyFgHSL, pole);
- }
- function modifyBorderHSL(_a, poleFg, poleBg) {
- var h = _a.h, s = _a.s, l = _a.l, a = _a.a;
- var isDark = l < 0.5;
- var isNeutral = l < 0.2 || s < 0.24;
- var hx = h;
- var sx = s;
- if (isNeutral) {
- if (isDark) {
- hx = poleFg.h;
- sx = poleFg.s;
- }
- else {
- hx = poleBg.h;
- sx = poleBg.s;
- }
- }
- var lx = scale(l, 0, 1, 0.5, 0.2);
- return { h: hx, s: sx, l: lx, a: a };
- }
- function modifyBorderColor(rgb, theme) {
- if (theme.mode === 0) {
- return modifyLightSchemeColor(rgb, theme);
- }
- var poleFg = getFgPole(theme);
- var poleBg = getBgPole(theme);
- return modifyColorWithCache(rgb, __assign(__assign({}, theme), { mode: 0 }), modifyBorderHSL, poleFg, poleBg);
- }
- function modifyShadowColor(rgb, filter) {
- return modifyBackgroundColor(rgb, filter);
- }
- function modifyGradientColor(rgb, filter) {
- return modifyBackgroundColor(rgb, filter);
- }
- function createTextStyle(config) {
- var lines = [];
- lines.push('*:not(pre, pre *, code, .far, .fa, .glyphicon, [class*="vjs-"], .fab, .fa-github, .fas, .material-icons, .icofont, .typcn, mu, [class*="mu-"], .glyphicon, .icon) {');
- if (config.useFont && config.fontFamily) {
- lines.push(" font-family: ".concat(config.fontFamily, " !important;"));
- }
- if (config.textStroke > 0) {
- lines.push(" -webkit-text-stroke: ".concat(config.textStroke, "px !important;"));
- lines.push(" text-stroke: ".concat(config.textStroke, "px !important;"));
- }
- lines.push('}');
- return lines.join('\n');
- }
- var FilterMode;
- (function (FilterMode) {
- FilterMode[FilterMode["light"] = 0] = "light";
- FilterMode[FilterMode["dark"] = 1] = "dark";
- })(FilterMode || (FilterMode = {}));
- function getCSSFilterValue(config) {
- var filters = [];
- if (config.mode === FilterMode.dark) {
- filters.push('invert(100%) hue-rotate(180deg)');
- }
- if (config.brightness !== 100) {
- filters.push("brightness(".concat(config.brightness, "%)"));
- }
- if (config.contrast !== 100) {
- filters.push("contrast(".concat(config.contrast, "%)"));
- }
- if (config.grayscale !== 0) {
- filters.push("grayscale(".concat(config.grayscale, "%)"));
- }
- if (config.sepia !== 0) {
- filters.push("sepia(".concat(config.sepia, "%)"));
- }
- if (filters.length === 0) {
- return null;
- }
- return filters.join(' ');
- }
- function toSVGMatrix(matrix) {
- return matrix.slice(0, 4).map(function (m) { return m.map(function (m) { return m.toFixed(3); }).join(' '); }).join(' ');
- }
- function getSVGFilterMatrixValue(config) {
- return toSVGMatrix(createFilterMatrix(config));
- }
- var counter = 0;
- var resolvers$1 = new Map();
- var rejectors = new Map();
- function bgFetch(request) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- return [2, new Promise(function (resolve, reject) {
- var id = ++counter;
- resolvers$1.set(id, resolve);
- rejectors.set(id, reject);
- chrome.runtime.sendMessage({ type: MessageType.CS_FETCH, data: request, id: id });
- })];
- });
- });
- }
- chrome.runtime.onMessage.addListener(function (_a) {
- var type = _a.type, data = _a.data, error = _a.error, id = _a.id;
- if (type === MessageType.BG_FETCH_RESPONSE) {
- var resolve = resolvers$1.get(id);
- var reject = rejectors.get(id);
- resolvers$1.delete(id);
- rejectors.delete(id);
- if (error) {
- reject && reject(error);
- }
- else {
- resolve && resolve(data);
- }
- }
- });
- var AsyncQueue = (function () {
- function AsyncQueue() {
- this.queue = [];
- this.timerId = null;
- this.frameDuration = 1000 / 60;
- }
- AsyncQueue.prototype.addToQueue = function (entry) {
- this.queue.push(entry);
- this.startQueue();
- };
- AsyncQueue.prototype.stopQueue = function () {
- if (this.timerId !== null) {
- cancelAnimationFrame(this.timerId);
- this.timerId = null;
- }
- this.queue = [];
- };
- AsyncQueue.prototype.startQueue = function () {
- var _this = this;
- if (this.timerId) {
- return;
- }
- this.timerId = requestAnimationFrame(function () {
- _this.timerId = null;
- var start = Date.now();
- var cb;
- while ((cb = _this.queue.shift())) {
- cb();
- if (Date.now() - start >= _this.frameDuration) {
- _this.startQueue();
- break;
- }
- }
- });
- };
- return AsyncQueue;
- }());
- var imageManager = new AsyncQueue();
- function getImageDetails(url) {
- return __awaiter(this, void 0, void 0, function () {
- var _this = this;
- return __generator(this, function (_a) {
- return [2, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
- var dataURL, error_1, image_1, error_2;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (!url.startsWith('data:')) return [3, 1];
- dataURL = url;
- return [3, 4];
- case 1:
- _a.trys.push([1, 3, , 4]);
- return [4, getImageDataURL(url)];
- case 2:
- dataURL = _a.sent();
- return [3, 4];
- case 3:
- error_1 = _a.sent();
- reject(error_1);
- return [2];
- case 4:
- _a.trys.push([4, 6, , 7]);
- return [4, urlToImage(dataURL)];
- case 5:
- image_1 = _a.sent();
- imageManager.addToQueue(function () {
- resolve(__assign({ src: url, dataURL: dataURL, width: image_1.naturalWidth, height: image_1.naturalHeight }, analyzeImage(image_1)));
- });
- return [3, 7];
- case 6:
- error_2 = _a.sent();
- reject(error_2);
- return [3, 7];
- case 7: return [2];
- }
- });
- }); })];
- });
- });
- }
- function getImageDataURL(url) {
- return __awaiter(this, void 0, void 0, function () {
- var parsedURL;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- parsedURL = new URL(url);
- if (!(parsedURL.origin === location.origin)) return [3, 2];
- return [4, loadAsDataURL(url)];
- case 1: return [2, _a.sent()];
- case 2: return [4, bgFetch({ url: url, responseType: 'data-url' })];
- case 3: return [2, _a.sent()];
- }
- });
- });
- }
- function urlToImage(url) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- return [2, new Promise(function (resolve, reject) {
- var image = new Image();
- image.onload = function () { return resolve(image); };
- image.onerror = function () { return reject("Unable to load image ".concat(url)); };
- image.src = url;
- })];
- });
- });
- }
- var MAX_ANALIZE_PIXELS_COUNT = 32 * 32;
- var canvas;
- var context;
- function createCanvas() {
- var maxWidth = MAX_ANALIZE_PIXELS_COUNT;
- var maxHeight = MAX_ANALIZE_PIXELS_COUNT;
- canvas = document.createElement('canvas');
- canvas.width = maxWidth;
- canvas.height = maxHeight;
- context = canvas.getContext('2d');
- context.imageSmoothingEnabled = false;
- }
- function removeCanvas() {
- canvas = null;
- context = null;
- }
- var MAX_IMAGE_SIZE = 5 * 1024 * 1024;
- function analyzeImage(image) {
- if (!canvas) {
- createCanvas();
- }
- var naturalWidth = image.naturalWidth, naturalHeight = image.naturalHeight;
- if (naturalHeight === 0 || naturalWidth === 0) {
- logWarn("logWarn(Image is empty ".concat(image.currentSrc, ")"));
- return null;
- }
- var size = naturalWidth * naturalHeight * 4;
- if (size > MAX_IMAGE_SIZE) {
- logInfo('Skipped large image analyzing(Larger than 5mb in memory)');
- return {
- isDark: false,
- isLight: false,
- isTransparent: false,
- isLarge: false,
- isTooLarge: true,
- };
- }
- var naturalPixelsCount = naturalWidth * naturalHeight;
- var k = Math.min(1, Math.sqrt(MAX_ANALIZE_PIXELS_COUNT / naturalPixelsCount));
- var width = Math.ceil(naturalWidth * k);
- var height = Math.ceil(naturalHeight * k);
- context.clearRect(0, 0, width, height);
- context.drawImage(image, 0, 0, naturalWidth, naturalHeight, 0, 0, width, height);
- var imageData = context.getImageData(0, 0, width, height);
- var d = imageData.data;
- var TRANSPARENT_ALPHA_THRESHOLD = 0.05;
- var DARK_LIGHTNESS_THRESHOLD = 0.4;
- var LIGHT_LIGHTNESS_THRESHOLD = 0.7;
- var transparentPixelsCount = 0;
- var darkPixelsCount = 0;
- var lightPixelsCount = 0;
- var i, x, y;
- var r, g, b, a;
- var l;
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++) {
- i = 4 * (y * width + x);
- r = d[i + 0];
- g = d[i + 1];
- b = d[i + 2];
- a = d[i + 3];
- if (a / 255 < TRANSPARENT_ALPHA_THRESHOLD) {
- transparentPixelsCount++;
- }
- else {
- l = getSRGBLightness(r, g, b);
- if (l < DARK_LIGHTNESS_THRESHOLD) {
- darkPixelsCount++;
- }
- if (l > LIGHT_LIGHTNESS_THRESHOLD) {
- lightPixelsCount++;
- }
- }
- }
- }
- var totalPixelsCount = width * height;
- var opaquePixelsCount = totalPixelsCount - transparentPixelsCount;
- var DARK_IMAGE_THRESHOLD = 0.7;
- var LIGHT_IMAGE_THRESHOLD = 0.7;
- var TRANSPARENT_IMAGE_THRESHOLD = 0.1;
- var LARGE_IMAGE_PIXELS_COUNT = 800 * 600;
- return {
- isDark: ((darkPixelsCount / opaquePixelsCount) >= DARK_IMAGE_THRESHOLD),
- isLight: ((lightPixelsCount / opaquePixelsCount) >= LIGHT_IMAGE_THRESHOLD),
- isTransparent: ((transparentPixelsCount / totalPixelsCount) >= TRANSPARENT_IMAGE_THRESHOLD),
- isLarge: (naturalPixelsCount >= LARGE_IMAGE_PIXELS_COUNT),
- isTooLarge: false,
- };
- }
- function getFilteredImageDataURL(_a, theme) {
- var dataURL = _a.dataURL, width = _a.width, height = _a.height;
- var matrix = getSVGFilterMatrixValue(theme);
- var svg = [
- "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"".concat(width, "\" height=\"").concat(height, "\">"),
- '<defs>',
- '<filter id="darkreader-image-filter">',
- "<feColorMatrix type=\"matrix\" values=\"".concat(matrix, "\" />"),
- '</filter>',
- '</defs>',
- "<image width=\"".concat(width, "\" height=\"").concat(height, "\" filter=\"url(#darkreader-image-filter)\" xlink:href=\"").concat(dataURL, "\" />"),
- '</svg>',
- ].join('');
- return "data:image/svg+xml;base64,".concat(btoa(svg));
- }
- function cleanImageProcessingCache() {
- imageManager && imageManager.stopQueue();
- removeCanvas();
- }
- var gradientLength = 'gradient'.length;
- var conicGradient = 'conic-';
- var conicGradientLength = conicGradient.length;
- var radialGradient = 'radial-';
- var linearGradient = 'linear-';
- function parseGradient(value) {
- var result = [];
- var index = 0;
- var startIndex = conicGradient.length;
- var _loop_1 = function () {
- var typeGradient;
- [linearGradient, radialGradient, conicGradient].find(function (possibleType) {
- if (index - possibleType.length >= 0) {
- var possibleGradient = value.substring(index - possibleType.length, index);
- if (possibleGradient === possibleType) {
- if (value.slice(index - possibleType.length - 10, index - possibleType.length - 1) === 'repeating') {
- typeGradient = "repeating-".concat(possibleType, "gradient");
- return true;
- }
- if (value.slice(index - possibleType.length - 8, index - possibleType.length - 1) === '-webkit') {
- typeGradient = "-webkit-".concat(possibleType, "gradient");
- return true;
- }
- typeGradient = "".concat(possibleType, "gradient");
- return true;
- }
- }
- });
- if (!typeGradient) {
- return "break";
- }
- var _a = getParenthesesRange(value, index + gradientLength), start = _a.start, end = _a.end;
- var match = value.substring(start + 1, end - 1);
- startIndex = end + 1 + conicGradientLength;
- result.push({
- typeGradient: typeGradient,
- match: match,
- offset: typeGradient.length + 2,
- index: index - typeGradient.length + gradientLength,
- hasComma: true,
- });
- };
- while ((index = value.indexOf('gradient', startIndex)) !== -1) {
- var state_1 = _loop_1();
- if (state_1 === "break")
- break;
- }
- if (result.length) {
- result[result.length - 1].hasComma = false;
- }
- return result;
- }
- function getPriority(ruleStyle, property) {
- return Boolean(ruleStyle && ruleStyle.getPropertyPriority(property));
- }
- function getModifiableCSSDeclaration(property, value, rule, variablesStore, ignoreImageSelectors, isCancelled) {
- if (property.startsWith('--')) {
- var modifier = getVariableModifier(variablesStore, property, value, rule, ignoreImageSelectors, isCancelled);
- if (modifier) {
- return { property: property, value: modifier, important: getPriority(rule.style, property), sourceValue: value };
- }
- }
- else if (value.includes('var(')) {
- var modifier = getVariableDependantModifier(variablesStore, property, value);
- if (modifier) {
- return { property: property, value: modifier, important: getPriority(rule.style, property), sourceValue: value };
- }
- }
- else if ((property.includes('color') && property !== '-webkit-print-color-adjust') ||
- property === 'fill' ||
- property === 'stroke' ||
- property === 'stop-color') {
- var modifier = getColorModifier(property, value);
- if (modifier) {
- return { property: property, value: modifier, important: getPriority(rule.style, property), sourceValue: value };
- }
- }
- else if (property === 'background-image' || property === 'list-style-image') {
- var modifier = getBgImageModifier(value, rule, ignoreImageSelectors, isCancelled);
- if (modifier) {
- return { property: property, value: modifier, important: getPriority(rule.style, property), sourceValue: value };
- }
- }
- else if (property.includes('shadow')) {
- var modifier = getShadowModifier(value);
- if (modifier) {
- return { property: property, value: modifier, important: getPriority(rule.style, property), sourceValue: value };
- }
- }
- return null;
- }
- function joinSelectors() {
- var selectors = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- selectors[_i] = arguments[_i];
- }
- return selectors.filter(Boolean).join(', ');
- }
- function getModifiedUserAgentStyle(theme, isIFrame, styleSystemControls) {
- var lines = [];
- if (!isIFrame) {
- lines.push('html {');
- lines.push(" background-color: ".concat(modifyBackgroundColor({ r: 255, g: 255, b: 255 }, theme), " !important;"));
- lines.push('}');
- }
- if (isCSSColorSchemePropSupported) {
- lines.push('html {');
- lines.push(" color-scheme: ".concat(theme.mode === 1 ? 'dark' : 'dark light', " !important;"));
- lines.push('}');
- }
- var bgSelectors = joinSelectors(isIFrame ? '' : 'html, body', styleSystemControls ? 'input, textarea, select, button' : '');
- if (bgSelectors) {
- lines.push("".concat(bgSelectors, " {"));
- lines.push(" background-color: ".concat(modifyBackgroundColor({ r: 255, g: 255, b: 255 }, theme), ";"));
- lines.push('}');
- }
- lines.push("".concat(joinSelectors('html, body', styleSystemControls ? 'input, textarea, select, button' : ''), " {"));
- lines.push(" border-color: ".concat(modifyBorderColor({ r: 76, g: 76, b: 76 }, theme), ";"));
- lines.push(" color: ".concat(modifyForegroundColor({ r: 0, g: 0, b: 0 }, theme), ";"));
- lines.push('}');
- lines.push('a {');
- lines.push(" color: ".concat(modifyForegroundColor({ r: 0, g: 64, b: 255 }, theme), ";"));
- lines.push('}');
- lines.push('table {');
- lines.push(" border-color: ".concat(modifyBorderColor({ r: 128, g: 128, b: 128 }, theme), ";"));
- lines.push('}');
- lines.push('::placeholder {');
- lines.push(" color: ".concat(modifyForegroundColor({ r: 169, g: 169, b: 169 }, theme), ";"));
- lines.push('}');
- lines.push('input:-webkit-autofill,');
- lines.push('textarea:-webkit-autofill,');
- lines.push('select:-webkit-autofill {');
- lines.push(" background-color: ".concat(modifyBackgroundColor({ r: 250, g: 255, b: 189 }, theme), " !important;"));
- lines.push(" color: ".concat(modifyForegroundColor({ r: 0, g: 0, b: 0 }, theme), " !important;"));
- lines.push('}');
- if (theme.scrollbarColor) {
- lines.push(getModifiedScrollbarStyle(theme));
- }
- if (theme.selectionColor) {
- lines.push(getModifiedSelectionStyle(theme));
- }
- return lines.join('\n');
- }
- function getSelectionColor(theme) {
- var backgroundColorSelection;
- var foregroundColorSelection;
- if (theme.selectionColor === 'auto') {
- backgroundColorSelection = modifyBackgroundColor({ r: 0, g: 96, b: 212 }, __assign(__assign({}, theme), { grayscale: 0 }));
- foregroundColorSelection = modifyForegroundColor({ r: 255, g: 255, b: 255 }, __assign(__assign({}, theme), { grayscale: 0 }));
- }
- else {
- var rgb = parse(theme.selectionColor);
- var hsl = rgbToHSL(rgb);
- backgroundColorSelection = theme.selectionColor;
- if (hsl.l < 0.5) {
- foregroundColorSelection = '#FFF';
- }
- else {
- foregroundColorSelection = '#000';
- }
- }
- return { backgroundColorSelection: backgroundColorSelection, foregroundColorSelection: foregroundColorSelection };
- }
- function getModifiedSelectionStyle(theme) {
- var lines = [];
- var modifiedSelectionColor = getSelectionColor(theme);
- var backgroundColorSelection = modifiedSelectionColor.backgroundColorSelection;
- var foregroundColorSelection = modifiedSelectionColor.foregroundColorSelection;
- ['::selection', '::-moz-selection'].forEach(function (selection) {
- lines.push("".concat(selection, " {"));
- lines.push(" background-color: ".concat(backgroundColorSelection, " !important;"));
- lines.push(" color: ".concat(foregroundColorSelection, " !important;"));
- lines.push('}');
- });
- return lines.join('\n');
- }
- function getModifiedScrollbarStyle(theme) {
- var lines = [];
- var colorTrack;
- var colorIcons;
- var colorThumb;
- var colorThumbHover;
- var colorThumbActive;
- var colorCorner;
- if (theme.scrollbarColor === 'auto') {
- colorTrack = modifyBackgroundColor({ r: 241, g: 241, b: 241 }, theme);
- colorIcons = modifyForegroundColor({ r: 96, g: 96, b: 96 }, theme);
- colorThumb = modifyBackgroundColor({ r: 176, g: 176, b: 176 }, theme);
- colorThumbHover = modifyBackgroundColor({ r: 144, g: 144, b: 144 }, theme);
- colorThumbActive = modifyBackgroundColor({ r: 96, g: 96, b: 96 }, theme);
- colorCorner = modifyBackgroundColor({ r: 255, g: 255, b: 255 }, theme);
- }
- else {
- var rgb = parse(theme.scrollbarColor);
- var hsl_1 = rgbToHSL(rgb);
- var isLight = hsl_1.l > 0.5;
- var lighten = function (lighter) { return (__assign(__assign({}, hsl_1), { l: clamp(hsl_1.l + lighter, 0, 1) })); };
- var darken = function (darker) { return (__assign(__assign({}, hsl_1), { l: clamp(hsl_1.l - darker, 0, 1) })); };
- colorTrack = hslToString(darken(0.4));
- colorIcons = hslToString(isLight ? darken(0.4) : lighten(0.4));
- colorThumb = hslToString(hsl_1);
- colorThumbHover = hslToString(lighten(0.1));
- colorThumbActive = hslToString(lighten(0.2));
- }
- lines.push('::-webkit-scrollbar {');
- lines.push(" background-color: ".concat(colorTrack, ";"));
- lines.push(" color: ".concat(colorIcons, ";"));
- lines.push('}');
- lines.push('::-webkit-scrollbar-thumb {');
- lines.push(" background-color: ".concat(colorThumb, ";"));
- lines.push('}');
- lines.push('::-webkit-scrollbar-thumb:hover {');
- lines.push(" background-color: ".concat(colorThumbHover, ";"));
- lines.push('}');
- lines.push('::-webkit-scrollbar-thumb:active {');
- lines.push(" background-color: ".concat(colorThumbActive, ";"));
- lines.push('}');
- lines.push('::-webkit-scrollbar-corner {');
- lines.push(" background-color: ".concat(colorCorner, ";"));
- lines.push('}');
- if (isFirefox) {
- lines.push('* {');
- lines.push(" scrollbar-color: ".concat(colorThumb, " ").concat(colorTrack, ";"));
- lines.push('}');
- }
- return lines.join('\n');
- }
- function getModifiedFallbackStyle(filter, _a) {
- var strict = _a.strict;
- var lines = [];
- var isMicrosoft = ['microsoft.com', 'docs.microsoft.com'].includes(location.hostname);
- lines.push("html, body, ".concat(strict ? "body :not(iframe)".concat(isMicrosoft ? ':not(div[style^="position:absolute;top:0;left:-"]' : '') : 'body > :not(iframe)', " {"));
- lines.push(" background-color: ".concat(modifyBackgroundColor({ r: 255, g: 255, b: 255 }, filter), " !important;"));
- lines.push(" border-color: ".concat(modifyBorderColor({ r: 64, g: 64, b: 64 }, filter), " !important;"));
- lines.push(" color: ".concat(modifyForegroundColor({ r: 0, g: 0, b: 0 }, filter), " !important;"));
- lines.push('}');
- return lines.join('\n');
- }
- var unparsableColors = new Set([
- 'inherit',
- 'transparent',
- 'initial',
- 'currentcolor',
- 'none',
- 'unset',
- ]);
- var colorParseCache = new Map();
- function parseColorWithCache($color) {
- $color = $color.trim();
- if (colorParseCache.has($color)) {
- return colorParseCache.get($color);
- }
- if ($color.includes('calc(')) {
- $color = lowerCalcExpression($color);
- }
- var color = parse($color);
- colorParseCache.set($color, color);
- return color;
- }
- function tryParseColor($color) {
- try {
- return parseColorWithCache($color);
- }
- catch (err) {
- return null;
- }
- }
- function getColorModifier(prop, value) {
- if (unparsableColors.has(value.toLowerCase())) {
- return value;
- }
- try {
- var rgb_1 = parseColorWithCache(value);
- if (prop.includes('background')) {
- return function (filter) { return modifyBackgroundColor(rgb_1, filter); };
- }
- if (prop.includes('border') || prop.includes('outline')) {
- return function (filter) { return modifyBorderColor(rgb_1, filter); };
- }
- return function (filter) { return modifyForegroundColor(rgb_1, filter); };
- }
- catch (err) {
- logWarn('Color parse error', err);
- return null;
- }
- }
- var imageDetailsCache = new Map();
- var awaitingForImageLoading = new Map();
- function shouldIgnoreImage(selectorText, selectors) {
- if (!selectorText || selectors.length === 0) {
- return false;
- }
- if (selectors.some(function (s) { return s === '*'; })) {
- return true;
- }
- var ruleSelectors = selectorText.split(/,\s*/g);
- var _loop_1 = function (i) {
- var ignoredSelector = selectors[i];
- if (ruleSelectors.some(function (s) { return s === ignoredSelector; })) {
- return { value: true };
- }
- };
- for (var i = 0; i < selectors.length; i++) {
- var state_1 = _loop_1(i);
- if (typeof state_1 === "object")
- return state_1.value;
- }
- return false;
- }
- function getBgImageModifier(value, rule, ignoreImageSelectors, isCancelled) {
- var _this = this;
- try {
- var gradients = parseGradient(value);
- var urls = getMatches(cssURLRegex, value);
- if (urls.length === 0 && gradients.length === 0) {
- return value;
- }
- var getIndices = function (matches) {
- var index = 0;
- return matches.map(function (match) {
- var valueIndex = value.indexOf(match, index);
- index = valueIndex + match.length;
- return { match: match, index: valueIndex };
- });
- };
- var matches_1 = gradients.map(function (i) { return (__assign({ type: 'gradient' }, i)); })
- .concat(getIndices(urls).map(function (i) { return (__assign({ type: 'url', offset: 0 }, i)); }))
- .sort(function (a, b) { return a.index > b.index ? 1 : -1; });
- var getGradientModifier_1 = function (gradient) {
- var typeGradient = gradient.typeGradient, match = gradient.match, hasComma = gradient.hasComma;
- var partsRegex = /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?[^\(\),]*),?/g;
- var colorStopRegex = /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/;
- var parts = getMatches(partsRegex, match, 1).map(function (part) {
- part = part.trim();
- var rgb = tryParseColor(part);
- if (rgb) {
- return function (filter) { return modifyGradientColor(rgb, filter); };
- }
- var space = part.lastIndexOf(' ');
- rgb = tryParseColor(part.substring(0, space));
- if (rgb) {
- return function (filter) { return "".concat(modifyGradientColor(rgb, filter), " ").concat(part.substring(space + 1)); };
- }
- var colorStopMatch = part.match(colorStopRegex);
- if (colorStopMatch) {
- rgb = tryParseColor(colorStopMatch[3]);
- if (rgb) {
- return function (filter) { return "".concat(colorStopMatch[1], "(").concat(colorStopMatch[2] ? "".concat(colorStopMatch[2], ", ") : '').concat(modifyGradientColor(rgb, filter), ")"); };
- }
- }
- return function () { return part; };
- });
- return function (filter) {
- return "".concat(typeGradient, "(").concat(parts.map(function (modify) { return modify(filter); }).join(', '), ")").concat(hasComma ? ', ' : '');
- };
- };
- var getURLModifier_1 = function (urlValue) {
- var _a;
- if (shouldIgnoreImage(rule.selectorText, ignoreImageSelectors)) {
- return null;
- }
- var url = getCSSURLValue(urlValue);
- var parentStyleSheet = rule.parentStyleSheet;
- var baseURL = (parentStyleSheet && parentStyleSheet.href) ?
- getCSSBaseBath(parentStyleSheet.href) :
- ((_a = parentStyleSheet.ownerNode) === null || _a === void 0 ? void 0 : _a.baseURI) || location.origin;
- url = getAbsoluteURL(baseURL, url);
- var absoluteValue = "url(\"".concat(url, "\")");
- return function (filter) { return __awaiter(_this, void 0, void 0, function () {
- var imageDetails, awaiters_1, err_1, bgImageValue;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (!imageDetailsCache.has(url)) return [3, 1];
- imageDetails = imageDetailsCache.get(url);
- return [3, 7];
- case 1:
- _a.trys.push([1, 6, , 7]);
- if (!awaitingForImageLoading.has(url)) return [3, 3];
- awaiters_1 = awaitingForImageLoading.get(url);
- return [4, new Promise(function (resolve) { return awaiters_1.push(resolve); })];
- case 2:
- imageDetails = _a.sent();
- if (!imageDetails) {
- return [2, null];
- }
- return [3, 5];
- case 3:
- awaitingForImageLoading.set(url, []);
- return [4, getImageDetails(url)];
- case 4:
- imageDetails = _a.sent();
- imageDetailsCache.set(url, imageDetails);
- awaitingForImageLoading.get(url).forEach(function (resolve) { return resolve(imageDetails); });
- awaitingForImageLoading.delete(url);
- _a.label = 5;
- case 5:
- if (isCancelled()) {
- return [2, null];
- }
- return [3, 7];
- case 6:
- err_1 = _a.sent();
- logWarn(err_1);
- if (awaitingForImageLoading.has(url)) {
- awaitingForImageLoading.get(url).forEach(function (resolve) { return resolve(null); });
- awaitingForImageLoading.delete(url);
- }
- return [2, absoluteValue];
- case 7:
- bgImageValue = getBgImageValue_1(imageDetails, filter) || absoluteValue;
- return [2, bgImageValue];
- }
- });
- }); };
- };
- var getBgImageValue_1 = function (imageDetails, filter) {
- var isDark = imageDetails.isDark, isLight = imageDetails.isLight, isTransparent = imageDetails.isTransparent, isLarge = imageDetails.isLarge, isTooLarge = imageDetails.isTooLarge, width = imageDetails.width;
- var result;
- if (isTooLarge) {
- result = "url(\"".concat(imageDetails.src, "\")");
- }
- else if (isDark && isTransparent && filter.mode === 1 && !isLarge && width > 2) {
- logInfo("Inverting dark image ".concat(imageDetails.src));
- var inverted = getFilteredImageDataURL(imageDetails, __assign(__assign({}, filter), { sepia: clamp(filter.sepia + 10, 0, 100) }));
- result = "url(\"".concat(inverted, "\")");
- }
- else if (isLight && !isTransparent && filter.mode === 1) {
- if (isLarge) {
- result = 'none';
- }
- else {
- logInfo("Dimming light image ".concat(imageDetails.src));
- var dimmed = getFilteredImageDataURL(imageDetails, filter);
- result = "url(\"".concat(dimmed, "\")");
- }
- }
- else if (filter.mode === 0 && isLight && !isLarge) {
- logInfo("Applying filter to image ".concat(imageDetails.src));
- var filtered = getFilteredImageDataURL(imageDetails, __assign(__assign({}, filter), { brightness: clamp(filter.brightness - 10, 5, 200), sepia: clamp(filter.sepia + 10, 0, 100) }));
- result = "url(\"".concat(filtered, "\")");
- }
- else {
- result = null;
- }
- return result;
- };
- var modifiers_1 = [];
- var matchIndex_1 = 0;
- matches_1.forEach(function (_a, i) {
- var type = _a.type, match = _a.match, index = _a.index, typeGradient = _a.typeGradient, hasComma = _a.hasComma, offset = _a.offset;
- var matchStart = index;
- var prefixStart = matchIndex_1;
- var matchEnd = matchStart + match.length + offset;
- matchIndex_1 = matchEnd;
- prefixStart !== matchStart && modifiers_1.push(function () { return value.substring(prefixStart, matchStart); });
- if (type === 'url') {
- modifiers_1.push(getURLModifier_1(match));
- }
- else if (type === 'gradient') {
- modifiers_1.push(getGradientModifier_1({ match: match, index: index, typeGradient: typeGradient, hasComma: hasComma, offset: offset }));
- }
- if (i === matches_1.length - 1) {
- modifiers_1.push(function () { return value.substring(matchEnd); });
- }
- });
- return function (filter) {
- var results = modifiers_1.filter(Boolean).map(function (modify) { return modify(filter); });
- if (results.some(function (r) { return r instanceof Promise; })) {
- return Promise.all(results).then(function (asyncResults) {
- return asyncResults.filter(Boolean).join('');
- });
- }
- return results.join('');
- };
- }
- catch (err) {
- logWarn("Unable to parse gradient ".concat(value), err);
- return null;
- }
- }
- function getShadowModifierWithInfo(value) {
- try {
- var index_1 = 0;
- var colorMatches_1 = getMatches(/(^|\s)(?!calc)([a-z]+\(.+?\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/ig, value, 2);
- var notParsed_1 = 0;
- var modifiers_2 = colorMatches_1.map(function (match, i) {
- var prefixIndex = index_1;
- var matchIndex = value.indexOf(match, index_1);
- var matchEnd = matchIndex + match.length;
- index_1 = matchEnd;
- var rgb = tryParseColor(match);
- if (!rgb) {
- notParsed_1++;
- return function () { return value.substring(prefixIndex, matchEnd); };
- }
- return function (filter) { return "".concat(value.substring(prefixIndex, matchIndex)).concat(modifyShadowColor(rgb, filter)).concat(i === colorMatches_1.length - 1 ? value.substring(matchEnd) : ''); };
- });
- return function (filter) {
- var modified = modifiers_2.map(function (modify) { return modify(filter); }).join('');
- return {
- matchesLength: colorMatches_1.length,
- unparseableMatchesLength: notParsed_1,
- result: modified,
- };
- };
- }
- catch (err) {
- logWarn("Unable to parse shadow ".concat(value), err);
- return null;
- }
- }
- function getShadowModifier(value) {
- var shadowModifier = getShadowModifierWithInfo(value);
- if (!shadowModifier) {
- return null;
- }
- return function (theme) { return shadowModifier(theme).result; };
- }
- function getVariableModifier(variablesStore, prop, value, rule, ignoredImgSelectors, isCancelled) {
- return variablesStore.getModifierForVariable({
- varName: prop,
- sourceValue: value,
- rule: rule,
- ignoredImgSelectors: ignoredImgSelectors,
- isCancelled: isCancelled,
- });
- }
- function getVariableDependantModifier(variablesStore, prop, value) {
- return variablesStore.getModifierForVarDependant(prop, value);
- }
- function cleanModificationCache() {
- colorParseCache.clear();
- clearColorModificationCache();
- imageDetailsCache.clear();
- cleanImageProcessingCache();
- awaitingForImageLoading.clear();
- }
- var VAR_TYPE_BGCOLOR = 1 << 0;
- var VAR_TYPE_TEXTCOLOR = 1 << 1;
- var VAR_TYPE_BORDERCOLOR = 1 << 2;
- var VAR_TYPE_BGIMG = 1 << 3;
- var VariablesStore = (function () {
- function VariablesStore() {
- this.varTypes = new Map();
- this.rulesQueue = [];
- this.definedVars = new Set();
- this.varRefs = new Map();
- this.unknownColorVars = new Set();
- this.unknownBgVars = new Set();
- this.undefinedVars = new Set();
- this.initialVarTypes = new Map();
- this.changedTypeVars = new Set();
- this.typeChangeSubscriptions = new Map();
- this.unstableVarValues = new Map();
- }
- VariablesStore.prototype.clear = function () {
- this.varTypes.clear();
- this.rulesQueue.splice(0);
- this.definedVars.clear();
- this.varRefs.clear();
- this.unknownColorVars.clear();
- this.unknownBgVars.clear();
- this.undefinedVars.clear();
- this.initialVarTypes.clear();
- this.changedTypeVars.clear();
- this.typeChangeSubscriptions.clear();
- this.unstableVarValues.clear();
- };
- VariablesStore.prototype.isVarType = function (varName, typeNum) {
- return (this.varTypes.has(varName) &&
- (this.varTypes.get(varName) & typeNum) > 0);
- };
- VariablesStore.prototype.addRulesForMatching = function (rules) {
- this.rulesQueue.push(rules);
- };
- VariablesStore.prototype.matchVariablesAndDependants = function () {
- var _this = this;
- this.changedTypeVars.clear();
- this.initialVarTypes = new Map(this.varTypes);
- this.collectRootVariables();
- this.collectVariablesAndVarDep(this.rulesQueue);
- this.rulesQueue.splice(0);
- this.collectRootVarDependants();
- this.varRefs.forEach(function (refs, v) {
- refs.forEach(function (r) {
- if (_this.varTypes.has(v)) {
- _this.resolveVariableType(r, _this.varTypes.get(v));
- }
- });
- });
- this.unknownColorVars.forEach(function (v) {
- if (_this.unknownBgVars.has(v)) {
- _this.unknownColorVars.delete(v);
- _this.unknownBgVars.delete(v);
- _this.resolveVariableType(v, VAR_TYPE_BGCOLOR);
- }
- else if (_this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR)) {
- _this.unknownColorVars.delete(v);
- }
- else {
- _this.undefinedVars.add(v);
- }
- });
- this.unknownBgVars.forEach(function (v) {
- var hasColor = _this.findVarRef(v, function (ref) {
- return (_this.unknownColorVars.has(ref) ||
- _this.isVarType(ref, VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR));
- }) != null;
- if (hasColor) {
- _this.itarateVarRefs(v, function (ref) {
- _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR);
- });
- }
- else if (_this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)) {
- _this.unknownBgVars.delete(v);
- }
- else {
- _this.undefinedVars.add(v);
- }
- });
- this.changedTypeVars.forEach(function (varName) {
- if (_this.typeChangeSubscriptions.has(varName)) {
- _this.typeChangeSubscriptions
- .get(varName)
- .forEach(function (callback) {
- callback();
- });
- }
- });
- this.changedTypeVars.clear();
- };
- VariablesStore.prototype.getModifierForVariable = function (options) {
- var _this = this;
- return function (theme) {
- var varName = options.varName, sourceValue = options.sourceValue, rule = options.rule, ignoredImgSelectors = options.ignoredImgSelectors, isCancelled = options.isCancelled;
- var getDeclarations = function () {
- var declarations = [];
- var addModifiedValue = function (typeNum, varNameWrapper, colorModifier) {
- if (!_this.isVarType(varName, typeNum)) {
- return;
- }
- var property = varNameWrapper(varName);
- var modifiedValue;
- if (isVarDependant(sourceValue)) {
- if (isConstructedColorVar(sourceValue)) {
- var value = insertVarValues(sourceValue, _this.unstableVarValues);
- if (!value) {
- value = typeNum === VAR_TYPE_BGCOLOR ? '#ffffff' : '#000000';
- }
- modifiedValue = colorModifier(value, theme);
- }
- else {
- modifiedValue = replaceCSSVariablesNames(sourceValue, function (v) { return varNameWrapper(v); }, function (fallback) { return colorModifier(fallback, theme); });
- }
- }
- else {
- modifiedValue = colorModifier(sourceValue, theme);
- }
- declarations.push({
- property: property,
- value: modifiedValue,
- });
- };
- addModifiedValue(VAR_TYPE_BGCOLOR, wrapBgColorVariableName, tryModifyBgColor);
- addModifiedValue(VAR_TYPE_TEXTCOLOR, wrapTextColorVariableName, tryModifyTextColor);
- addModifiedValue(VAR_TYPE_BORDERCOLOR, wrapBorderColorVariableName, tryModifyBorderColor);
- if (_this.isVarType(varName, VAR_TYPE_BGIMG)) {
- var property = wrapBgImgVariableName(varName);
- var modifiedValue = sourceValue;
- if (isVarDependant(sourceValue)) {
- modifiedValue = replaceCSSVariablesNames(sourceValue, function (v) { return wrapBgColorVariableName(v); }, function (fallback) { return tryModifyBgColor(fallback, theme); });
- }
- var bgModifier = getBgImageModifier(modifiedValue, rule, ignoredImgSelectors, isCancelled);
- modifiedValue = typeof bgModifier === 'function' ? bgModifier(theme) : bgModifier;
- declarations.push({
- property: property,
- value: modifiedValue,
- });
- }
- return declarations;
- };
- var callbacks = new Set();
- var addListener = function (onTypeChange) {
- var callback = function () {
- var decs = getDeclarations();
- onTypeChange(decs);
- };
- callbacks.add(callback);
- _this.subscribeForVarTypeChange(varName, callback);
- };
- var removeListeners = function () {
- callbacks.forEach(function (callback) {
- _this.unsubscribeFromVariableTypeChanges(varName, callback);
- });
- };
- return {
- declarations: getDeclarations(),
- onTypeChange: { addListener: addListener, removeListeners: removeListeners },
- };
- };
- };
- VariablesStore.prototype.getModifierForVarDependant = function (property, sourceValue) {
- var _this = this;
- if (sourceValue.match(/^\s*(rgb|hsl)a?\(/)) {
- var isBg_1 = property.startsWith('background');
- var isText_1 = (property === 'color' || property === 'caret-color');
- return function (theme) {
- var value = insertVarValues(sourceValue, _this.unstableVarValues);
- if (!value) {
- value = isBg_1 ? '#ffffff' : '#000000';
- }
- var modifier = isBg_1 ? tryModifyBgColor : isText_1 ? tryModifyTextColor : tryModifyBorderColor;
- return modifier(value, theme);
- };
- }
- if (property === 'background-color') {
- return function (theme) {
- return replaceCSSVariablesNames(sourceValue, function (v) { return wrapBgColorVariableName(v); }, function (fallback) { return tryModifyBgColor(fallback, theme); });
- };
- }
- if (property === 'color' || property === 'caret-color') {
- return function (theme) {
- return replaceCSSVariablesNames(sourceValue, function (v) { return wrapTextColorVariableName(v); }, function (fallback) { return tryModifyTextColor(fallback, theme); });
- };
- }
- if (property === 'background' || property === 'background-image' || property === 'box-shadow') {
- return function (theme) {
- var unknownVars = new Set();
- var modify = function () {
- var variableReplaced = replaceCSSVariablesNames(sourceValue, function (v) {
- if (_this.isVarType(v, VAR_TYPE_BGCOLOR)) {
- return wrapBgColorVariableName(v);
- }
- if (_this.isVarType(v, VAR_TYPE_BGIMG)) {
- return wrapBgImgVariableName(v);
- }
- unknownVars.add(v);
- return v;
- }, function (fallback) { return tryModifyBgColor(fallback, theme); });
- if (property === 'box-shadow') {
- var shadowModifier = getShadowModifierWithInfo(variableReplaced);
- var modifiedShadow = shadowModifier(theme);
- if (modifiedShadow.unparseableMatchesLength !== modifiedShadow.matchesLength) {
- return modifiedShadow.result;
- }
- }
- return variableReplaced;
- };
- var modified = modify();
- if (unknownVars.size > 0) {
- return new Promise(function (resolve) {
- var firstUnknownVar = unknownVars.values().next().value;
- var callback = function () {
- _this.unsubscribeFromVariableTypeChanges(firstUnknownVar, callback);
- var newValue = modify();
- resolve(newValue);
- };
- _this.subscribeForVarTypeChange(firstUnknownVar, callback);
- });
- }
- return modified;
- };
- }
- if (property.startsWith('border') || property.startsWith('outline')) {
- return function (theme) {
- return replaceCSSVariablesNames(sourceValue, function (v) { return wrapBorderColorVariableName(v); }, function (fallback) { return tryModifyBorderColor(fallback, theme); });
- };
- }
- return null;
- };
- VariablesStore.prototype.subscribeForVarTypeChange = function (varName, callback) {
- if (!this.typeChangeSubscriptions.has(varName)) {
- this.typeChangeSubscriptions.set(varName, new Set());
- }
- var rootStore = this.typeChangeSubscriptions.get(varName);
- if (!rootStore.has(callback)) {
- rootStore.add(callback);
- }
- };
- VariablesStore.prototype.unsubscribeFromVariableTypeChanges = function (varName, callback) {
- if (this.typeChangeSubscriptions.has(varName)) {
- this.typeChangeSubscriptions.get(varName).delete(callback);
- }
- };
- VariablesStore.prototype.collectVariablesAndVarDep = function (ruleList) {
- var _this = this;
- ruleList.forEach(function (rules) {
- iterateCSSRules(rules, function (rule) {
- rule.style && iterateCSSDeclarations(rule.style, function (property, value) {
- if (isVariable(property)) {
- _this.inspectVariable(property, value);
- }
- if (isVarDependant(value)) {
- _this.inspectVarDependant(property, value);
- }
- });
- });
- });
- };
- VariablesStore.prototype.collectRootVariables = function () {
- var _this = this;
- iterateCSSDeclarations(document.documentElement.style, function (property, value) {
- if (isVariable(property)) {
- _this.inspectVariable(property, value);
- }
- });
- };
- VariablesStore.prototype.inspectVariable = function (varName, value) {
- this.unstableVarValues.set(varName, value);
- if (isVarDependant(value) && isConstructedColorVar(value)) {
- this.unknownColorVars.add(varName);
- this.definedVars.add(varName);
- }
- if (this.definedVars.has(varName)) {
- return;
- }
- this.definedVars.add(varName);
- var color = tryParseColor(value);
- if (color) {
- this.unknownColorVars.add(varName);
- }
- else if (value.includes('url(') ||
- value.includes('linear-gradient(') ||
- value.includes('radial-gradient(')) {
- this.resolveVariableType(varName, VAR_TYPE_BGIMG);
- }
- };
- VariablesStore.prototype.resolveVariableType = function (varName, typeNum) {
- var initialType = this.initialVarTypes.get(varName) || 0;
- var currentType = this.varTypes.get(varName) || 0;
- var newType = currentType | typeNum;
- this.varTypes.set(varName, newType);
- if (newType !== initialType || this.undefinedVars.has(varName)) {
- this.changedTypeVars.add(varName);
- this.undefinedVars.delete(varName);
- }
- this.unknownColorVars.delete(varName);
- this.unknownBgVars.delete(varName);
- };
- VariablesStore.prototype.collectRootVarDependants = function () {
- var _this = this;
- iterateCSSDeclarations(document.documentElement.style, function (property, value) {
- if (isVarDependant(value)) {
- _this.inspectVarDependant(property, value);
- }
- });
- };
- VariablesStore.prototype.inspectVarDependant = function (property, value) {
- var _this = this;
- if (isVariable(property)) {
- this.iterateVarDeps(value, function (ref) {
- if (!_this.varRefs.has(property)) {
- _this.varRefs.set(property, new Set());
- }
- _this.varRefs.get(property).add(ref);
- });
- }
- else if (property === 'background-color' || property === 'box-shadow') {
- this.iterateVarDeps(value, function (v) { return _this.resolveVariableType(v, VAR_TYPE_BGCOLOR); });
- }
- else if (property === 'color' || property === 'caret-color') {
- this.iterateVarDeps(value, function (v) { return _this.resolveVariableType(v, VAR_TYPE_TEXTCOLOR); });
- }
- else if (property.startsWith('border') || property.startsWith('outline')) {
- this.iterateVarDeps(value, function (v) { return _this.resolveVariableType(v, VAR_TYPE_BORDERCOLOR); });
- }
- else if (property === 'background' || property === 'background-image') {
- this.iterateVarDeps(value, function (v) {
- if (_this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)) {
- return;
- }
- var isBgColor = _this.findVarRef(v, function (ref) {
- return (_this.unknownColorVars.has(ref) ||
- _this.isVarType(ref, VAR_TYPE_TEXTCOLOR | VAR_TYPE_BORDERCOLOR));
- }) != null;
- _this.itarateVarRefs(v, function (ref) {
- if (isBgColor) {
- _this.resolveVariableType(ref, VAR_TYPE_BGCOLOR);
- }
- else {
- _this.unknownBgVars.add(ref);
- }
- });
- });
- }
- };
- VariablesStore.prototype.iterateVarDeps = function (value, iterator) {
- var varDeps = new Set();
- iterateVarDependencies(value, function (v) { return varDeps.add(v); });
- varDeps.forEach(function (v) { return iterator(v); });
- };
- VariablesStore.prototype.findVarRef = function (varName, iterator, stack) {
- var e_1, _a;
- if (stack === void 0) { stack = new Set(); }
- if (stack.has(varName)) {
- return null;
- }
- stack.add(varName);
- var result = iterator(varName);
- if (result) {
- return varName;
- }
- var refs = this.varRefs.get(varName);
- if (!refs || refs.size === 0) {
- return null;
- }
- try {
- for (var refs_1 = __values(refs), refs_1_1 = refs_1.next(); !refs_1_1.done; refs_1_1 = refs_1.next()) {
- var ref = refs_1_1.value;
- var found = this.findVarRef(ref, iterator, stack);
- if (found) {
- return found;
- }
- }
- }
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
- finally {
- try {
- if (refs_1_1 && !refs_1_1.done && (_a = refs_1.return)) _a.call(refs_1);
- }
- finally { if (e_1) throw e_1.error; }
- }
- return null;
- };
- VariablesStore.prototype.itarateVarRefs = function (varName, iterator) {
- this.findVarRef(varName, function (ref) {
- iterator(ref);
- return false;
- });
- };
- VariablesStore.prototype.setOnRootVariableChange = function (callback) {
- this.onRootVariableDefined = callback;
- };
- VariablesStore.prototype.putRootVars = function (styleElement, theme) {
- var e_2, _a;
- var _this = this;
- var sheet = styleElement.sheet;
- if (sheet.cssRules.length > 0) {
- sheet.deleteRule(0);
- }
- var declarations = new Map();
- iterateCSSDeclarations(document.documentElement.style, function (property, value) {
- if (isVariable(property)) {
- if (_this.isVarType(property, VAR_TYPE_BGCOLOR)) {
- declarations.set(wrapBgColorVariableName(property), tryModifyBgColor(value, theme));
- }
- if (_this.isVarType(property, VAR_TYPE_TEXTCOLOR)) {
- declarations.set(wrapTextColorVariableName(property), tryModifyTextColor(value, theme));
- }
- if (_this.isVarType(property, VAR_TYPE_BORDERCOLOR)) {
- declarations.set(wrapBorderColorVariableName(property), tryModifyBorderColor(value, theme));
- }
- _this.subscribeForVarTypeChange(property, _this.onRootVariableDefined);
- }
- });
- var cssLines = [];
- cssLines.push(':root {');
- try {
- for (var declarations_1 = __values(declarations), declarations_1_1 = declarations_1.next(); !declarations_1_1.done; declarations_1_1 = declarations_1.next()) {
- var _b = __read(declarations_1_1.value, 2), property = _b[0], value = _b[1];
- cssLines.push(" ".concat(property, ": ").concat(value, ";"));
- }
- }
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
- finally {
- try {
- if (declarations_1_1 && !declarations_1_1.done && (_a = declarations_1.return)) _a.call(declarations_1);
- }
- finally { if (e_2) throw e_2.error; }
- }
- cssLines.push('}');
- var cssText = cssLines.join('\n');
- sheet.insertRule(cssText);
- };
- return VariablesStore;
- }());
- var variablesStore = new VariablesStore();
- function getVariableRange(input, searchStart) {
- if (searchStart === void 0) { searchStart = 0; }
- var start = input.indexOf('var(', searchStart);
- if (start >= 0) {
- var range = getParenthesesRange(input, start + 3);
- if (range) {
- return { start: start, end: range.end };
- }
- return null;
- }
- }
- function getVariablesMatches(input) {
- var ranges = [];
- var i = 0;
- var range;
- while ((range = getVariableRange(input, i))) {
- var start = range.start, end = range.end;
- ranges.push({ start: start, end: end, value: input.substring(start, end) });
- i = range.end + 1;
- }
- return ranges;
- }
- function replaceVariablesMatches(input, replacer) {
- var matches = getVariablesMatches(input);
- var matchesCount = matches.length;
- if (matchesCount === 0) {
- return input;
- }
- var inputLength = input.length;
- var replacements = matches.map(function (m) { return replacer(m.value); });
- var parts = [];
- parts.push(input.substring(0, matches[0].start));
- for (var i = 0; i < matchesCount; i++) {
- parts.push(replacements[i]);
- var start = matches[i].end;
- var end = i < matchesCount - 1 ? matches[i + 1].start : inputLength;
- parts.push(input.substring(start, end));
- }
- return parts.join('');
- }
- function getVariableNameAndFallback(match) {
- var commaIndex = match.indexOf(',');
- var name;
- var fallback;
- if (commaIndex >= 0) {
- name = match.substring(4, commaIndex).trim();
- fallback = match.substring(commaIndex + 1, match.length - 1).trim();
- }
- else {
- name = match.substring(4, match.length - 1).trim();
- fallback = '';
- }
- return { name: name, fallback: fallback };
- }
- function replaceCSSVariablesNames(value, nameReplacer, fallbackReplacer) {
- var matchReplacer = function (match) {
- var _a = getVariableNameAndFallback(match), name = _a.name, fallback = _a.fallback;
- var newName = nameReplacer(name);
- if (!fallback) {
- return "var(".concat(newName, ")");
- }
- var newFallback;
- if (isVarDependant(fallback)) {
- newFallback = replaceCSSVariablesNames(fallback, nameReplacer, fallbackReplacer);
- }
- else if (fallbackReplacer) {
- newFallback = fallbackReplacer(fallback);
- }
- else {
- newFallback = fallback;
- }
- return "var(".concat(newName, ", ").concat(newFallback, ")");
- };
- return replaceVariablesMatches(value, matchReplacer);
- }
- function iterateVarDependencies(value, iterator) {
- replaceCSSVariablesNames(value, function (varName) {
- iterator(varName);
- return varName;
- });
- }
- function wrapBgColorVariableName(name) {
- return "--darkreader-bg".concat(name);
- }
- function wrapTextColorVariableName(name) {
- return "--darkreader-text".concat(name);
- }
- function wrapBorderColorVariableName(name) {
- return "--darkreader-border".concat(name);
- }
- function wrapBgImgVariableName(name) {
- return "--darkreader-bgimg".concat(name);
- }
- function isVariable(property) {
- return property.startsWith('--');
- }
- function isVarDependant(value) {
- return value.includes('var(');
- }
- function isConstructedColorVar(value) {
- return value.match(/^\s*(rgb|hsl)a?\(/);
- }
- var rawValueRegex = /^\d{1,3}, ?\d{1,3}, ?\d{1,3}$/;
- function parseRawValue(color) {
- if (rawValueRegex.test(color)) {
- var splitted = color.split(',');
- var resultInRGB_1 = 'rgb(';
- splitted.forEach(function (number) {
- resultInRGB_1 += "".concat(number.trim(), ", ");
- });
- resultInRGB_1 = resultInRGB_1.substring(0, resultInRGB_1.length - 2);
- resultInRGB_1 += ')';
- return { isRaw: true, color: resultInRGB_1 };
- }
- return { isRaw: false, color: color };
- }
- function handleRawValue(color, theme, modifyFunction) {
- var _a = parseRawValue(color), isRaw = _a.isRaw, newColor = _a.color;
- var rgb = tryParseColor(newColor);
- if (rgb) {
- var outputColor = modifyFunction(rgb, theme);
- if (isRaw) {
- var outputInRGB = tryParseColor(outputColor);
- return outputInRGB ? "".concat(outputInRGB.r, ", ").concat(outputInRGB.g, ", ").concat(outputInRGB.b) : outputColor;
- }
- return outputColor;
- }
- return newColor;
- }
- function tryModifyBgColor(color, theme) {
- return handleRawValue(color, theme, modifyBackgroundColor);
- }
- function tryModifyTextColor(color, theme) {
- return handleRawValue(color, theme, modifyForegroundColor);
- }
- function tryModifyBorderColor(color, theme) {
- return handleRawValue(color, theme, modifyBorderColor);
- }
- function insertVarValues(source, varValues, stack) {
- if (stack === void 0) { stack = new Set(); }
- var containsUnresolvedVar = false;
- var matchReplacer = function (match) {
- var _a = getVariableNameAndFallback(match), name = _a.name, fallback = _a.fallback;
- if (stack.has(name)) {
- containsUnresolvedVar = true;
- return null;
- }
- stack.add(name);
- var varValue = varValues.get(name) || fallback;
- var inserted = null;
- if (varValue) {
- if (isVarDependant(varValue)) {
- inserted = insertVarValues(varValue, varValues, stack);
- }
- else {
- inserted = varValue;
- }
- }
- if (!inserted) {
- containsUnresolvedVar = true;
- return null;
- }
- return inserted;
- };
- var replaced = replaceVariablesMatches(source, matchReplacer);
- if (containsUnresolvedVar) {
- return null;
- }
- return replaced;
- }
- var overrides = {
- 'background-color': {
- customProp: '--darkreader-inline-bgcolor',
- cssProp: 'background-color',
- dataAttr: 'data-darkreader-inline-bgcolor',
- },
- 'background-image': {
- customProp: '--darkreader-inline-bgimage',
- cssProp: 'background-image',
- dataAttr: 'data-darkreader-inline-bgimage',
- },
- 'border-color': {
- customProp: '--darkreader-inline-border',
- cssProp: 'border-color',
- dataAttr: 'data-darkreader-inline-border',
- },
- 'border-bottom-color': {
- customProp: '--darkreader-inline-border-bottom',
- cssProp: 'border-bottom-color',
- dataAttr: 'data-darkreader-inline-border-bottom',
- },
- 'border-left-color': {
- customProp: '--darkreader-inline-border-left',
- cssProp: 'border-left-color',
- dataAttr: 'data-darkreader-inline-border-left',
- },
- 'border-right-color': {
- customProp: '--darkreader-inline-border-right',
- cssProp: 'border-right-color',
- dataAttr: 'data-darkreader-inline-border-right',
- },
- 'border-top-color': {
- customProp: '--darkreader-inline-border-top',
- cssProp: 'border-top-color',
- dataAttr: 'data-darkreader-inline-border-top',
- },
- 'box-shadow': {
- customProp: '--darkreader-inline-boxshadow',
- cssProp: 'box-shadow',
- dataAttr: 'data-darkreader-inline-boxshadow',
- },
- 'color': {
- customProp: '--darkreader-inline-color',
- cssProp: 'color',
- dataAttr: 'data-darkreader-inline-color',
- },
- 'fill': {
- customProp: '--darkreader-inline-fill',
- cssProp: 'fill',
- dataAttr: 'data-darkreader-inline-fill',
- },
- 'stroke': {
- customProp: '--darkreader-inline-stroke',
- cssProp: 'stroke',
- dataAttr: 'data-darkreader-inline-stroke',
- },
- 'outline-color': {
- customProp: '--darkreader-inline-outline',
- cssProp: 'outline-color',
- dataAttr: 'data-darkreader-inline-outline',
- },
- 'stop-color': {
- customProp: '--darkreader-inline-stopcolor',
- cssProp: 'stop-color',
- dataAttr: 'data-darkreader-inline-stopcolor',
- },
- };
- var overridesList = Object.values(overrides);
- var normalizedPropList = {};
- overridesList.forEach(function (_a) {
- var cssProp = _a.cssProp, customProp = _a.customProp;
- return normalizedPropList[customProp] = cssProp;
- });
- var INLINE_STYLE_ATTRS = ['style', 'fill', 'stop-color', 'stroke', 'bgcolor', 'color'];
- var INLINE_STYLE_SELECTOR = INLINE_STYLE_ATTRS.map(function (attr) { return "[".concat(attr, "]"); }).join(', ');
- function getInlineOverrideStyle() {
- return overridesList.map(function (_a) {
- var dataAttr = _a.dataAttr, customProp = _a.customProp, cssProp = _a.cssProp;
- return [
- "[".concat(dataAttr, "] {"),
- " ".concat(cssProp, ": var(").concat(customProp, ") !important;"),
- '}',
- ].join('\n');
- }).join('\n');
- }
- function getInlineStyleElements(root) {
- var results = [];
- if (root instanceof Element && root.matches(INLINE_STYLE_SELECTOR)) {
- results.push(root);
- }
- if (root instanceof Element || (isShadowDomSupported && root instanceof ShadowRoot) || root instanceof Document) {
- push(results, root.querySelectorAll(INLINE_STYLE_SELECTOR));
- }
- return results;
- }
- var treeObservers = new Map();
- var attrObservers = new Map();
- function watchForInlineStyles(elementStyleDidChange, shadowRootDiscovered) {
- deepWatchForInlineStyles(document, elementStyleDidChange, shadowRootDiscovered);
- iterateShadowHosts(document.documentElement, function (host) {
- deepWatchForInlineStyles(host.shadowRoot, elementStyleDidChange, shadowRootDiscovered);
- });
- }
- function deepWatchForInlineStyles(root, elementStyleDidChange, shadowRootDiscovered) {
- if (treeObservers.has(root)) {
- treeObservers.get(root).disconnect();
- attrObservers.get(root).disconnect();
- }
- var discoveredNodes = new WeakSet();
- function discoverNodes(node) {
- getInlineStyleElements(node).forEach(function (el) {
- if (discoveredNodes.has(el)) {
- return;
- }
- discoveredNodes.add(el);
- elementStyleDidChange(el);
- });
- iterateShadowHosts(node, function (n) {
- if (discoveredNodes.has(node)) {
- return;
- }
- discoveredNodes.add(node);
- shadowRootDiscovered(n.shadowRoot);
- deepWatchForInlineStyles(n.shadowRoot, elementStyleDidChange, shadowRootDiscovered);
- });
- }
- var treeObserver = createOptimizedTreeObserver(root, {
- onMinorMutations: function (_a) {
- var additions = _a.additions;
- additions.forEach(function (added) { return discoverNodes(added); });
- },
- onHugeMutations: function () {
- discoverNodes(root);
- },
- });
- treeObservers.set(root, treeObserver);
- var attemptCount = 0;
- var start = null;
- var ATTEMPTS_INTERVAL = getDuration({ seconds: 10 });
- var RETRY_TIMEOUT = getDuration({ seconds: 2 });
- var MAX_ATTEMPTS_COUNT = 50;
- var cache = [];
- var timeoutId = null;
- var handleAttributeMutations = throttle(function (mutations) {
- mutations.forEach(function (m) {
- if (INLINE_STYLE_ATTRS.includes(m.attributeName)) {
- elementStyleDidChange(m.target);
- }
- });
- });
- var attrObserver = new MutationObserver(function (mutations) {
- if (timeoutId) {
- cache.push.apply(cache, __spreadArray([], __read(mutations), false));
- return;
- }
- attemptCount++;
- var now = Date.now();
- if (start == null) {
- start = now;
- }
- else if (attemptCount >= MAX_ATTEMPTS_COUNT) {
- if (now - start < ATTEMPTS_INTERVAL) {
- timeoutId = setTimeout(function () {
- start = null;
- attemptCount = 0;
- timeoutId = null;
- var attributeCache = cache;
- cache = [];
- handleAttributeMutations(attributeCache);
- }, RETRY_TIMEOUT);
- cache.push.apply(cache, __spreadArray([], __read(mutations), false));
- return;
- }
- start = now;
- attemptCount = 1;
- }
- handleAttributeMutations(mutations);
- });
- attrObserver.observe(root, {
- attributes: true,
- attributeFilter: INLINE_STYLE_ATTRS.concat(overridesList.map(function (_a) {
- var dataAttr = _a.dataAttr;
- return dataAttr;
- })),
- subtree: true,
- });
- attrObservers.set(root, attrObserver);
- }
- function stopWatchingForInlineStyles() {
- treeObservers.forEach(function (o) { return o.disconnect(); });
- attrObservers.forEach(function (o) { return o.disconnect(); });
- treeObservers.clear();
- attrObservers.clear();
- }
- var inlineStyleCache = new WeakMap();
- var filterProps = ['brightness', 'contrast', 'grayscale', 'sepia', 'mode'];
- function getInlineStyleCacheKey(el, theme) {
- return INLINE_STYLE_ATTRS
- .map(function (attr) { return "".concat(attr, "=\"").concat(el.getAttribute(attr), "\""); })
- .concat(filterProps.map(function (prop) { return "".concat(prop, "=\"").concat(theme[prop], "\""); }))
- .join(' ');
- }
- function shouldIgnoreInlineStyle(element, selectors) {
- for (var i = 0, len = selectors.length; i < len; i++) {
- var ingnoredSelector = selectors[i];
- if (element.matches(ingnoredSelector)) {
- return true;
- }
- }
- return false;
- }
- function overrideInlineStyle(element, theme, ignoreInlineSelectors, ignoreImageSelectors) {
- var cacheKey = getInlineStyleCacheKey(element, theme);
- if (cacheKey === inlineStyleCache.get(element)) {
- return;
- }
- var unsetProps = new Set(Object.keys(overrides));
- function setCustomProp(targetCSSProp, modifierCSSProp, cssVal) {
- var isPropertyVariable = targetCSSProp.startsWith('--');
- var _a = isPropertyVariable ? {} : overrides[targetCSSProp], customProp = _a.customProp, dataAttr = _a.dataAttr;
- var mod = getModifiableCSSDeclaration(modifierCSSProp, cssVal, {}, variablesStore, ignoreImageSelectors, null);
- if (!mod) {
- return;
- }
- var value = mod.value;
- if (typeof value === 'function') {
- value = value(theme);
- }
- if (isPropertyVariable && typeof value === 'object') {
- var typedValue = value;
- typedValue.declarations.forEach(function (_a) {
- var property = _a.property, value = _a.value;
- !(value instanceof Promise) && element.style.setProperty(property, value);
- });
- }
- else {
- element.style.setProperty(customProp, value);
- if (!element.hasAttribute(dataAttr)) {
- element.setAttribute(dataAttr, '');
- }
- unsetProps.delete(targetCSSProp);
- }
- }
- if (ignoreInlineSelectors.length > 0) {
- if (shouldIgnoreInlineStyle(element, ignoreInlineSelectors)) {
- unsetProps.forEach(function (cssProp) {
- element.removeAttribute(overrides[cssProp].dataAttr);
- });
- return;
- }
- }
- if (element.hasAttribute('bgcolor')) {
- var value = element.getAttribute('bgcolor');
- if (value.match(/^[0-9a-f]{3}$/i) || value.match(/^[0-9a-f]{6}$/i)) {
- value = "#".concat(value);
- }
- setCustomProp('background-color', 'background-color', value);
- }
- if (element.hasAttribute('color') && element.rel !== 'mask-icon') {
- var value = element.getAttribute('color');
- if (value.match(/^[0-9a-f]{3}$/i) || value.match(/^[0-9a-f]{6}$/i)) {
- value = "#".concat(value);
- }
- setCustomProp('color', 'color', value);
- }
- if (element instanceof SVGElement) {
- if (element.hasAttribute('fill')) {
- var SMALL_SVG_LIMIT_1 = 32;
- var value_1 = element.getAttribute('fill');
- if (value_1 !== 'none') {
- if (!(element instanceof SVGTextElement)) {
- var handleSVGElement = function () {
- var _a = element.getBoundingClientRect(), width = _a.width, height = _a.height;
- var isBg = (width > SMALL_SVG_LIMIT_1 || height > SMALL_SVG_LIMIT_1);
- setCustomProp('fill', isBg ? 'background-color' : 'color', value_1);
- };
- if (isReadyStateComplete()) {
- handleSVGElement();
- }
- else {
- addReadyStateCompleteListener(handleSVGElement);
- }
- }
- else {
- setCustomProp('fill', 'color', value_1);
- }
- }
- }
- if (element.hasAttribute('stop-color')) {
- setCustomProp('stop-color', 'background-color', element.getAttribute('stop-color'));
- }
- }
- if (element.hasAttribute('stroke')) {
- var value = element.getAttribute('stroke');
- setCustomProp('stroke', element instanceof SVGLineElement || element instanceof SVGTextElement ? 'border-color' : 'color', value);
- }
- element.style && iterateCSSDeclarations(element.style, function (property, value) {
- if (property === 'background-image' && value.includes('url')) {
- return;
- }
- if (overrides.hasOwnProperty(property) || (property.startsWith('--') && !normalizedPropList[property])) {
- setCustomProp(property, property, value);
- }
- else {
- var overridenProp = normalizedPropList[property];
- if (overridenProp &&
- (!element.style.getPropertyValue(overridenProp) && !element.hasAttribute(overridenProp))) {
- if (overridenProp === 'background-color' && element.hasAttribute('bgcolor')) {
- return;
- }
- element.style.setProperty(property, '');
- }
- }
- });
- if (element.style && element instanceof SVGTextElement && element.style.fill) {
- setCustomProp('fill', 'color', element.style.getPropertyValue('fill'));
- }
- forEach(unsetProps, function (cssProp) {
- element.removeAttribute(overrides[cssProp].dataAttr);
- });
- inlineStyleCache.set(element, getInlineStyleCacheKey(element, theme));
- }
- var metaThemeColorName = 'theme-color';
- var metaThemeColorSelector = "meta[name=\"".concat(metaThemeColorName, "\"]");
- var srcMetaThemeColor = null;
- var observer = null;
- function changeMetaThemeColor(meta, theme) {
- srcMetaThemeColor = srcMetaThemeColor || meta.content;
- try {
- var color = parse(srcMetaThemeColor);
- meta.content = modifyBackgroundColor(color, theme);
- }
- catch (err) {
- logWarn(err);
- }
- }
- function changeMetaThemeColorWhenAvailable(theme) {
- var meta = document.querySelector(metaThemeColorSelector);
- if (meta) {
- changeMetaThemeColor(meta, theme);
- }
- else {
- if (observer) {
- observer.disconnect();
- }
- observer = new MutationObserver(function (mutations) {
- loop: for (var i = 0; i < mutations.length; i++) {
- var addedNodes = mutations[i].addedNodes;
- for (var j = 0; j < addedNodes.length; j++) {
- var node = addedNodes[j];
- if (node instanceof HTMLMetaElement && node.name === metaThemeColorName) {
- observer.disconnect();
- observer = null;
- changeMetaThemeColor(node, theme);
- break loop;
- }
- }
- }
- });
- observer.observe(document.head, { childList: true });
- }
- }
- function restoreMetaThemeColor() {
- if (observer) {
- observer.disconnect();
- observer = null;
- }
- var meta = document.querySelector(metaThemeColorSelector);
- if (meta && srcMetaThemeColor) {
- meta.content = srcMetaThemeColor;
- }
- }
- var themeCacheKeys = [
- 'mode',
- 'brightness',
- 'contrast',
- 'grayscale',
- 'sepia',
- 'darkSchemeBackgroundColor',
- 'darkSchemeTextColor',
- 'lightSchemeBackgroundColor',
- 'lightSchemeTextColor',
- ];
- function getThemeKey(theme) {
- var resultKey = '';
- themeCacheKeys.forEach(function (key) {
- resultKey += "".concat(key, ":").concat(theme[key], ";");
- });
- return resultKey;
- }
- var asyncQueue = createAsyncTasksQueue();
- function createStyleSheetModifier() {
- var renderId = 0;
- var rulesTextCache = new Set();
- var rulesModCache = new Map();
- var varTypeChangeCleaners = new Set();
- var prevFilterKey = null;
- var hasNonLoadedLink = false;
- var wasRebuilt = false;
- function shouldRebuildStyle() {
- return hasNonLoadedLink && !wasRebuilt;
- }
- function modifySheet(options) {
- var rules = options.sourceCSSRules;
- var theme = options.theme, ignoreImageAnalysis = options.ignoreImageAnalysis, force = options.force, prepareSheet = options.prepareSheet, isAsyncCancelled = options.isAsyncCancelled;
- var rulesChanged = (rulesModCache.size === 0);
- var notFoundCacheKeys = new Set(rulesModCache.keys());
- var themeKey = getThemeKey(theme);
- var themeChanged = (themeKey !== prevFilterKey);
- if (hasNonLoadedLink) {
- wasRebuilt = true;
- }
- var modRules = [];
- iterateCSSRules(rules, function (rule) {
- var cssText = rule.cssText;
- var textDiffersFromPrev = false;
- notFoundCacheKeys.delete(cssText);
- if (rule.parentRule instanceof CSSMediaRule) {
- cssText += ";".concat(rule.parentRule.media.mediaText);
- }
- if (!rulesTextCache.has(cssText)) {
- rulesTextCache.add(cssText);
- textDiffersFromPrev = true;
- }
- if (textDiffersFromPrev) {
- rulesChanged = true;
- }
- else {
- modRules.push(rulesModCache.get(cssText));
- return;
- }
- var modDecs = [];
- rule.style && iterateCSSDeclarations(rule.style, function (property, value) {
- var mod = getModifiableCSSDeclaration(property, value, rule, variablesStore, ignoreImageAnalysis, isAsyncCancelled);
- if (mod) {
- modDecs.push(mod);
- }
- });
- var modRule = null;
- if (modDecs.length > 0) {
- var parentRule = rule.parentRule;
- modRule = { selector: rule.selectorText, declarations: modDecs, parentRule: parentRule };
- modRules.push(modRule);
- }
- rulesModCache.set(cssText, modRule);
- }, function () {
- hasNonLoadedLink = true;
- });
- notFoundCacheKeys.forEach(function (key) {
- rulesTextCache.delete(key);
- rulesModCache.delete(key);
- });
- prevFilterKey = themeKey;
- if (!force && !rulesChanged && !themeChanged) {
- return;
- }
- renderId++;
- function setRule(target, index, rule) {
- var selector = rule.selector, declarations = rule.declarations;
- var getDeclarationText = function (dec) {
- var property = dec.property, value = dec.value, important = dec.important, sourceValue = dec.sourceValue;
- return "".concat(property, ": ").concat(value == null ? sourceValue : value).concat(important ? ' !important' : '', ";");
- };
- var cssRulesText = '';
- declarations.forEach(function (declarations) {
- cssRulesText += "".concat(getDeclarationText(declarations), " ");
- });
- var ruleText = "".concat(selector, " { ").concat(cssRulesText, " }");
- target.insertRule(ruleText, index);
- }
- var asyncDeclarations = new Map();
- var varDeclarations = new Map();
- var asyncDeclarationCounter = 0;
- var varDeclarationCounter = 0;
- var rootReadyGroup = { rule: null, rules: [], isGroup: true };
- var groupRefs = new WeakMap();
- function getGroup(rule) {
- if (rule == null) {
- return rootReadyGroup;
- }
- if (groupRefs.has(rule)) {
- return groupRefs.get(rule);
- }
- var group = { rule: rule, rules: [], isGroup: true };
- groupRefs.set(rule, group);
- var parentGroup = getGroup(rule.parentRule);
- parentGroup.rules.push(group);
- return group;
- }
- varTypeChangeCleaners.forEach(function (clear) { return clear(); });
- varTypeChangeCleaners.clear();
- modRules.filter(function (r) { return r; }).forEach(function (_a) {
- var selector = _a.selector, declarations = _a.declarations, parentRule = _a.parentRule;
- var group = getGroup(parentRule);
- var readyStyleRule = { selector: selector, declarations: [], isGroup: false };
- var readyDeclarations = readyStyleRule.declarations;
- group.rules.push(readyStyleRule);
- function handleAsyncDeclaration(property, modified, important, sourceValue) {
- var asyncKey = ++asyncDeclarationCounter;
- var asyncDeclaration = { property: property, value: null, important: important, asyncKey: asyncKey, sourceValue: sourceValue };
- readyDeclarations.push(asyncDeclaration);
- var currentRenderId = renderId;
- modified.then(function (asyncValue) {
- if (!asyncValue || isAsyncCancelled() || currentRenderId !== renderId) {
- return;
- }
- asyncDeclaration.value = asyncValue;
- asyncQueue.add(function () {
- if (isAsyncCancelled() || currentRenderId !== renderId) {
- return;
- }
- rebuildAsyncRule(asyncKey);
- });
- });
- }
- function handleVarDeclarations(property, modified, important, sourceValue) {
- var _a = modified, varDecs = _a.declarations, onTypeChange = _a.onTypeChange;
- var varKey = ++varDeclarationCounter;
- var currentRenderId = renderId;
- var initialIndex = readyDeclarations.length;
- var oldDecs = [];
- if (varDecs.length === 0) {
- var tempDec = { property: property, value: sourceValue, important: important, sourceValue: sourceValue, varKey: varKey };
- readyDeclarations.push(tempDec);
- oldDecs = [tempDec];
- }
- varDecs.forEach(function (mod) {
- if (mod.value instanceof Promise) {
- handleAsyncDeclaration(mod.property, mod.value, important, sourceValue);
- }
- else {
- var readyDec = { property: mod.property, value: mod.value, important: important, sourceValue: sourceValue, varKey: varKey };
- readyDeclarations.push(readyDec);
- oldDecs.push(readyDec);
- }
- });
- onTypeChange.addListener(function (newDecs) {
- if (isAsyncCancelled() || currentRenderId !== renderId) {
- return;
- }
- var readyVarDecs = newDecs.map(function (mod) {
- return { property: mod.property, value: mod.value, important: important, sourceValue: sourceValue, varKey: varKey };
- });
- var index = readyDeclarations.indexOf(oldDecs[0], initialIndex);
- readyDeclarations.splice.apply(readyDeclarations, __spreadArray([index, oldDecs.length], __read(readyVarDecs), false));
- oldDecs = readyVarDecs;
- rebuildVarRule(varKey);
- });
- varTypeChangeCleaners.add(function () { return onTypeChange.removeListeners(); });
- }
- declarations.forEach(function (_a) {
- var property = _a.property, value = _a.value, important = _a.important, sourceValue = _a.sourceValue;
- if (typeof value === 'function') {
- var modified = value(theme);
- if (modified instanceof Promise) {
- handleAsyncDeclaration(property, modified, important, sourceValue);
- }
- else if (property.startsWith('--')) {
- handleVarDeclarations(property, modified, important, sourceValue);
- }
- else {
- readyDeclarations.push({ property: property, value: modified, important: important, sourceValue: sourceValue });
- }
- }
- else {
- readyDeclarations.push({ property: property, value: value, important: important, sourceValue: sourceValue });
- }
- });
- });
- var sheet = prepareSheet();
- function buildStyleSheet() {
- function createTarget(group, parent) {
- var rule = group.rule;
- if (rule instanceof CSSMediaRule) {
- var media = rule.media;
- var index = parent.cssRules.length;
- parent.insertRule("@media ".concat(media.mediaText, " {}"), index);
- return parent.cssRules[index];
- }
- return parent;
- }
- function iterateReadyRules(group, target, styleIterator) {
- group.rules.forEach(function (r) {
- if (r.isGroup) {
- var t = createTarget(r, target);
- iterateReadyRules(r, t, styleIterator);
- }
- else {
- styleIterator(r, target);
- }
- });
- }
- iterateReadyRules(rootReadyGroup, sheet, function (rule, target) {
- var index = target.cssRules.length;
- rule.declarations.forEach(function (_a) {
- var asyncKey = _a.asyncKey, varKey = _a.varKey;
- if (asyncKey != null) {
- asyncDeclarations.set(asyncKey, { rule: rule, target: target, index: index });
- }
- if (varKey != null) {
- varDeclarations.set(varKey, { rule: rule, target: target, index: index });
- }
- });
- setRule(target, index, rule);
- });
- }
- function rebuildAsyncRule(key) {
- var _a = asyncDeclarations.get(key), rule = _a.rule, target = _a.target, index = _a.index;
- target.deleteRule(index);
- setRule(target, index, rule);
- asyncDeclarations.delete(key);
- }
- function rebuildVarRule(key) {
- var _a = varDeclarations.get(key), rule = _a.rule, target = _a.target, index = _a.index;
- target.deleteRule(index);
- setRule(target, index, rule);
- }
- buildStyleSheet();
- }
- return { modifySheet: modifySheet, shouldRebuildStyle: shouldRebuildStyle };
- }
- var STYLE_SELECTOR = 'style, link[rel*="stylesheet" i]:not([disabled])';
- function shouldManageStyle(element) {
- return (((element instanceof HTMLStyleElement) ||
- (element instanceof SVGStyleElement) ||
- (element instanceof HTMLLinkElement &&
- element.rel &&
- element.rel.toLowerCase().includes('stylesheet') &&
- !element.disabled &&
- (isFirefox ? !element.href.startsWith('moz-extension://') : true) &&
- ((new URL(element.href)).hostname != 'fonts.googleapis.com'))) &&
- !element.classList.contains('darkreader') &&
- element.media.toLowerCase() !== 'print' &&
- !element.classList.contains('stylus'));
- }
- function getManageableStyles(node, results, deep) {
- if (results === void 0) { results = []; }
- if (deep === void 0) { deep = true; }
- if (shouldManageStyle(node)) {
- results.push(node);
- }
- else if (node instanceof Element || (isShadowDomSupported && node instanceof ShadowRoot) || node === document) {
- forEach(node.querySelectorAll(STYLE_SELECTOR), function (style) { return getManageableStyles(style, results, false); });
- if (deep) {
- iterateShadowHosts(node, function (host) { return getManageableStyles(host.shadowRoot, results, false); });
- }
- }
- return results;
- }
- var syncStyleSet = new WeakSet();
- var corsStyleSet = new WeakSet();
- var canOptimizeUsingProxy$1 = false;
- document.addEventListener('__darkreader__inlineScriptsAllowed', function () {
- canOptimizeUsingProxy$1 = true;
- });
- var loadingLinkCounter = 0;
- var rejectorsForLoadingLinks = new Map();
- function cleanLoadingLinks() {
- rejectorsForLoadingLinks.clear();
- }
- function manageStyle(element, _a) {
- var update = _a.update, loadingStart = _a.loadingStart, loadingEnd = _a.loadingEnd;
- var prevStyles = [];
- var next = element;
- while ((next = next.nextElementSibling) && next.matches('.darkreader')) {
- prevStyles.push(next);
- }
- var corsCopy = prevStyles.find(function (el) { return el.matches('.darkreader--cors') && !corsStyleSet.has(el); }) || null;
- var syncStyle = prevStyles.find(function (el) { return el.matches('.darkreader--sync') && !syncStyleSet.has(el); }) || null;
- var corsCopyPositionWatcher = null;
- var syncStylePositionWatcher = null;
- var cancelAsyncOperations = false;
- var isOverrideEmpty = true;
- var sheetModifier = createStyleSheetModifier();
- var observer = new MutationObserver(function () {
- update();
- });
- var observerOptions = { attributes: true, childList: true, subtree: true, characterData: true };
- function containsCSSImport() {
- return element instanceof HTMLStyleElement && element.textContent.trim().match(cssImportRegex);
- }
- function hasImports(cssRules, checkCrossOrigin) {
- var result = false;
- if (cssRules) {
- var rule = void 0;
- cssRulesLoop: for (var i = 0, len = cssRules.length; i < len; i++) {
- rule = cssRules[i];
- if (rule.href) {
- if (checkCrossOrigin) {
- if (rule.href.startsWith('http') && !rule.href.startsWith(location.origin)) {
- result = true;
- break cssRulesLoop;
- }
- }
- else {
- result = true;
- break cssRulesLoop;
- }
- }
- }
- }
- return result;
- }
- function getRulesSync() {
- if (corsCopy) {
- logInfo('[getRulesSync] Using cors-copy.');
- return corsCopy.sheet.cssRules;
- }
- if (containsCSSImport()) {
- logInfo('[getRulesSync] CSSImport detected.');
- return null;
- }
- var cssRules = safeGetSheetRules();
- if (element instanceof HTMLLinkElement &&
- !isRelativeHrefOnAbsolutePath(element.href) &&
- hasImports(cssRules, false)) {
- logInfo('[getRulesSync] CSSImportRule detected on non-local href.');
- return null;
- }
- if (hasImports(cssRules, true)) {
- logInfo('[getRulesSync] Cross-Origin CSSImportRule detected.');
- return null;
- }
- logInfo('[getRulesSync] Using cssRules.');
- !cssRules && logWarn('[getRulesSync] cssRules is null, trying again.');
- return cssRules;
- }
- function insertStyle() {
- if (corsCopy) {
- if (element.nextSibling !== corsCopy) {
- element.parentNode.insertBefore(corsCopy, element.nextSibling);
- }
- if (corsCopy.nextSibling !== syncStyle) {
- element.parentNode.insertBefore(syncStyle, corsCopy.nextSibling);
- }
- }
- else if (element.nextSibling !== syncStyle) {
- element.parentNode.insertBefore(syncStyle, element.nextSibling);
- }
- }
- function createSyncStyle() {
- syncStyle = element instanceof SVGStyleElement ?
- document.createElementNS('http://www.w3.org/2000/svg', 'style') :
- document.createElement('style');
- syncStyle.classList.add('darkreader');
- syncStyle.classList.add('darkreader--sync');
- syncStyle.media = 'screen';
- if (element.title) {
- syncStyle.title = element.title;
- }
- syncStyleSet.add(syncStyle);
- }
- var isLoadingRules = false;
- var wasLoadingError = false;
- var loadingLinkId = ++loadingLinkCounter;
- function getRulesAsync() {
- return __awaiter(this, void 0, void 0, function () {
- var cssText, cssBasePath, _a, cssRules, accessError, err_1, fullCSSText, err_2;
- var _b;
- return __generator(this, function (_c) {
- switch (_c.label) {
- case 0:
- if (!(element instanceof HTMLLinkElement)) return [3, 7];
- _a = __read(getRulesOrError(), 2), cssRules = _a[0], accessError = _a[1];
- if (accessError) {
- logWarn(accessError);
- }
- if (!((!cssRules && !accessError && !isSafari) ||
- (isSafari && !element.sheet) ||
- isStillLoadingError(accessError))) return [3, 5];
- _c.label = 1;
- case 1:
- _c.trys.push([1, 3, , 4]);
- logInfo("Linkelement ".concat(loadingLinkId, " is not loaded yet and thus will be await for"), element);
- return [4, linkLoading(element, loadingLinkId)];
- case 2:
- _c.sent();
- return [3, 4];
- case 3:
- err_1 = _c.sent();
- logWarn(err_1);
- wasLoadingError = true;
- return [3, 4];
- case 4:
- if (cancelAsyncOperations) {
- return [2, null];
- }
- _b = __read(getRulesOrError(), 2), cssRules = _b[0], accessError = _b[1];
- if (accessError) {
- logWarn(accessError);
- }
- _c.label = 5;
- case 5:
- if (cssRules) {
- if (!hasImports(cssRules, false)) {
- return [2, cssRules];
- }
- }
- return [4, loadText(element.href)];
- case 6:
- cssText = _c.sent();
- cssBasePath = getCSSBaseBath(element.href);
- if (cancelAsyncOperations) {
- return [2, null];
- }
- return [3, 8];
- case 7:
- if (containsCSSImport()) {
- cssText = element.textContent.trim();
- cssBasePath = getCSSBaseBath(location.href);
- }
- else {
- return [2, null];
- }
- _c.label = 8;
- case 8:
- if (!cssText) return [3, 13];
- _c.label = 9;
- case 9:
- _c.trys.push([9, 11, , 12]);
- return [4, replaceCSSImports(cssText, cssBasePath)];
- case 10:
- fullCSSText = _c.sent();
- corsCopy = createCORSCopy(element, fullCSSText);
- return [3, 12];
- case 11:
- err_2 = _c.sent();
- logWarn(err_2);
- return [3, 12];
- case 12:
- if (corsCopy) {
- corsCopyPositionWatcher = watchForNodePosition(corsCopy, 'prev-sibling');
- return [2, corsCopy.sheet.cssRules];
- }
- _c.label = 13;
- case 13: return [2, null];
- }
- });
- });
- }
- function details(options) {
- var rules = getRulesSync();
- if (!rules) {
- if (options.secondRound) {
- logWarn('Detected dead-lock at details(), returning early to prevent it.');
- return null;
- }
- if (isLoadingRules || wasLoadingError) {
- return null;
- }
- isLoadingRules = true;
- loadingStart();
- getRulesAsync().then(function (results) {
- isLoadingRules = false;
- loadingEnd();
- if (results) {
- update();
- }
- }).catch(function (err) {
- logWarn(err);
- isLoadingRules = false;
- loadingEnd();
- });
- return null;
- }
- return { rules: rules };
- }
- var forceRenderStyle = false;
- function render(theme, ignoreImageAnalysis) {
- var rules = getRulesSync();
- if (!rules) {
- return;
- }
- cancelAsyncOperations = false;
- function removeCSSRulesFromSheet(sheet) {
- for (var i = sheet.cssRules.length - 1; i >= 0; i--) {
- sheet.deleteRule(i);
- }
- }
- function prepareOverridesSheet() {
- if (!syncStyle) {
- createSyncStyle();
- }
- syncStylePositionWatcher && syncStylePositionWatcher.stop();
- insertStyle();
- if (syncStyle.sheet == null) {
- syncStyle.textContent = '';
- }
- var sheet = syncStyle.sheet;
- removeCSSRulesFromSheet(sheet);
- if (syncStylePositionWatcher) {
- syncStylePositionWatcher.run();
- }
- else {
- syncStylePositionWatcher = watchForNodePosition(syncStyle, 'prev-sibling', function () {
- forceRenderStyle = true;
- buildOverrides();
- });
- }
- return syncStyle.sheet;
- }
- function buildOverrides() {
- var force = forceRenderStyle;
- forceRenderStyle = false;
- sheetModifier.modifySheet({
- prepareSheet: prepareOverridesSheet,
- sourceCSSRules: rules,
- theme: theme,
- ignoreImageAnalysis: ignoreImageAnalysis,
- force: force,
- isAsyncCancelled: function () { return cancelAsyncOperations; },
- });
- isOverrideEmpty = syncStyle.sheet.cssRules.length === 0;
- if (sheetModifier.shouldRebuildStyle()) {
- addReadyStateCompleteListener(function () { return update(); });
- }
- }
- buildOverrides();
- }
- function getRulesOrError() {
- try {
- if (element.sheet == null) {
- return [null, null];
- }
- return [element.sheet.cssRules, null];
- }
- catch (err) {
- return [null, err];
- }
- }
- function isStillLoadingError(error) {
- return error && error.message && error.message.includes('loading');
- }
- function safeGetSheetRules() {
- var _a = __read(getRulesOrError(), 2), cssRules = _a[0], err = _a[1];
- if (err) {
- logWarn(err);
- return null;
- }
- return cssRules;
- }
- function watchForSheetChanges() {
- watchForSheetChangesUsingProxy();
- if (!isThunderbird && !(canOptimizeUsingProxy$1 && element.sheet)) {
- watchForSheetChangesUsingRAF();
- }
- }
- var rulesChangeKey = null;
- var rulesCheckFrameId = null;
- function getRulesChangeKey() {
- var rules = safeGetSheetRules();
- return rules ? rules.length : null;
- }
- function didRulesKeyChange() {
- return getRulesChangeKey() !== rulesChangeKey;
- }
- function watchForSheetChangesUsingRAF() {
- rulesChangeKey = getRulesChangeKey();
- stopWatchingForSheetChangesUsingRAF();
- var checkForUpdate = function () {
- if (didRulesKeyChange()) {
- rulesChangeKey = getRulesChangeKey();
- update();
- }
- if (canOptimizeUsingProxy$1 && element.sheet) {
- stopWatchingForSheetChangesUsingRAF();
- return;
- }
- rulesCheckFrameId = requestAnimationFrame(checkForUpdate);
- };
- checkForUpdate();
- }
- function stopWatchingForSheetChangesUsingRAF() {
- cancelAnimationFrame(rulesCheckFrameId);
- }
- var areSheetChangesPending = false;
- function onSheetChange() {
- canOptimizeUsingProxy$1 = true;
- stopWatchingForSheetChangesUsingRAF();
- if (areSheetChangesPending) {
- return;
- }
- function handleSheetChanges() {
- areSheetChangesPending = false;
- if (cancelAsyncOperations) {
- return;
- }
- update();
- }
- areSheetChangesPending = true;
- if (typeof queueMicrotask === 'function') {
- queueMicrotask(handleSheetChanges);
- }
- else {
- requestAnimationFrame(handleSheetChanges);
- }
- }
- function watchForSheetChangesUsingProxy() {
- element.addEventListener('__darkreader__updateSheet', onSheetChange);
- }
- function stopWatchingForSheetChangesUsingProxy() {
- element.removeEventListener('__darkreader__updateSheet', onSheetChange);
- }
- function stopWatchingForSheetChanges() {
- stopWatchingForSheetChangesUsingProxy();
- stopWatchingForSheetChangesUsingRAF();
- }
- function pause() {
- observer.disconnect();
- cancelAsyncOperations = true;
- corsCopyPositionWatcher && corsCopyPositionWatcher.stop();
- syncStylePositionWatcher && syncStylePositionWatcher.stop();
- stopWatchingForSheetChanges();
- }
- function destroy() {
- pause();
- removeNode(corsCopy);
- removeNode(syncStyle);
- loadingEnd();
- if (rejectorsForLoadingLinks.has(loadingLinkId)) {
- var reject = rejectorsForLoadingLinks.get(loadingLinkId);
- rejectorsForLoadingLinks.delete(loadingLinkId);
- reject && reject();
- }
- }
- function watch() {
- observer.observe(element, observerOptions);
- if (element instanceof HTMLStyleElement) {
- watchForSheetChanges();
- }
- }
- var maxMoveCount = 10;
- var moveCount = 0;
- function restore() {
- if (!syncStyle) {
- return;
- }
- moveCount++;
- if (moveCount > maxMoveCount) {
- logWarn('Style sheet was moved multiple times', element);
- return;
- }
- logWarn('Restore style', syncStyle, element);
- insertStyle();
- corsCopyPositionWatcher && corsCopyPositionWatcher.skip();
- syncStylePositionWatcher && syncStylePositionWatcher.skip();
- if (!isOverrideEmpty) {
- forceRenderStyle = true;
- update();
- }
- }
- return {
- details: details,
- render: render,
- pause: pause,
- destroy: destroy,
- watch: watch,
- restore: restore,
- };
- }
- function linkLoading(link, loadingId) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- return [2, new Promise(function (resolve, reject) {
- var cleanUp = function () {
- link.removeEventListener('load', onLoad);
- link.removeEventListener('error', onError);
- rejectorsForLoadingLinks.delete(loadingId);
- };
- var onLoad = function () {
- cleanUp();
- logInfo("Linkelement ".concat(loadingId, " has been loaded"));
- resolve();
- };
- var onError = function () {
- cleanUp();
- reject("Linkelement ".concat(loadingId, " couldn't be loaded. ").concat(link.href));
- };
- rejectorsForLoadingLinks.set(loadingId, function () {
- cleanUp();
- reject();
- });
- link.addEventListener('load', onLoad);
- link.addEventListener('error', onError);
- if (!link.href) {
- onError();
- }
- })];
- });
- });
- }
- function getCSSImportURL(importDeclaration) {
- return getCSSURLValue(importDeclaration.substring(7).trim().replace(/;$/, '').replace(/screen$/, ''));
- }
- function loadText(url) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (!url.startsWith('data:')) return [3, 3];
- return [4, fetch(url)];
- case 1: return [4, (_a.sent()).text()];
- case 2: return [2, _a.sent()];
- case 3: return [4, bgFetch({ url: url, responseType: 'text', mimeType: 'text/css', origin: window.location.origin })];
- case 4: return [2, _a.sent()];
- }
- });
- });
- }
- function replaceCSSImports(cssText, basePath, cache) {
- if (cache === void 0) { cache = new Map(); }
- return __awaiter(this, void 0, void 0, function () {
- var importMatches, importMatches_1, importMatches_1_1, match, importURL, absoluteURL, importedCSS, err_3, e_1_1;
- var e_1, _a;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- cssText = removeCSSComments(cssText);
- cssText = replaceCSSFontFace(cssText);
- cssText = replaceCSSRelativeURLsWithAbsolute(cssText, basePath);
- importMatches = getMatches(cssImportRegex, cssText);
- _b.label = 1;
- case 1:
- _b.trys.push([1, 10, 11, 12]);
- importMatches_1 = __values(importMatches), importMatches_1_1 = importMatches_1.next();
- _b.label = 2;
- case 2:
- if (!!importMatches_1_1.done) return [3, 9];
- match = importMatches_1_1.value;
- importURL = getCSSImportURL(match);
- absoluteURL = getAbsoluteURL(basePath, importURL);
- importedCSS = void 0;
- if (!cache.has(absoluteURL)) return [3, 3];
- importedCSS = cache.get(absoluteURL);
- return [3, 7];
- case 3:
- _b.trys.push([3, 6, , 7]);
- return [4, loadText(absoluteURL)];
- case 4:
- importedCSS = _b.sent();
- cache.set(absoluteURL, importedCSS);
- return [4, replaceCSSImports(importedCSS, getCSSBaseBath(absoluteURL), cache)];
- case 5:
- importedCSS = _b.sent();
- return [3, 7];
- case 6:
- err_3 = _b.sent();
- logWarn(err_3);
- importedCSS = '';
- return [3, 7];
- case 7:
- cssText = cssText.split(match).join(importedCSS);
- _b.label = 8;
- case 8:
- importMatches_1_1 = importMatches_1.next();
- return [3, 2];
- case 9: return [3, 12];
- case 10:
- e_1_1 = _b.sent();
- e_1 = { error: e_1_1 };
- return [3, 12];
- case 11:
- try {
- if (importMatches_1_1 && !importMatches_1_1.done && (_a = importMatches_1.return)) _a.call(importMatches_1);
- }
- finally { if (e_1) throw e_1.error; }
- return [7];
- case 12:
- cssText = cssText.trim();
- return [2, cssText];
- }
- });
- });
- }
- function createCORSCopy(srcElement, cssText) {
- if (!cssText) {
- return null;
- }
- var cors = document.createElement('style');
- cors.classList.add('darkreader');
- cors.classList.add('darkreader--cors');
- cors.media = 'screen';
- cors.textContent = cssText;
- srcElement.parentNode.insertBefore(cors, srcElement.nextSibling);
- cors.sheet.disabled = true;
- corsStyleSet.add(cors);
- return cors;
- }
- var observers = [];
- var observedRoots;
- var undefinedGroups = new Map();
- var elementsDefinitionCallback;
- function collectUndefinedElements(root) {
- if (!isDefinedSelectorSupported) {
- return;
- }
- forEach(root.querySelectorAll(':not(:defined)'), function (el) {
- var tag = el.tagName.toLowerCase();
- if (!tag.includes('-')) {
- var extendedTag = el.getAttribute('is');
- if (extendedTag) {
- tag = extendedTag;
- }
- else {
- return;
- }
- }
- if (!undefinedGroups.has(tag)) {
- undefinedGroups.set(tag, new Set());
- customElementsWhenDefined(tag).then(function () {
- if (elementsDefinitionCallback) {
- var elements = undefinedGroups.get(tag);
- undefinedGroups.delete(tag);
- elementsDefinitionCallback(Array.from(elements));
- }
- });
- }
- undefinedGroups.get(tag).add(el);
- });
- }
- var canOptimizeUsingProxy = false;
- document.addEventListener('__darkreader__inlineScriptsAllowed', function () {
- canOptimizeUsingProxy = true;
- });
- var resolvers = new Map();
- function handleIsDefined(e) {
- canOptimizeUsingProxy = true;
- if (resolvers.has(e.detail.tag)) {
- var resolve = resolvers.get(e.detail.tag);
- resolve();
- }
- }
- function customElementsWhenDefined(tag) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- return [2, new Promise(function (resolve) {
- if (window.customElements && typeof customElements.whenDefined === 'function') {
- customElements.whenDefined(tag).then(function () { return resolve(); });
- }
- else if (canOptimizeUsingProxy) {
- resolvers.set(tag, resolve);
- document.dispatchEvent(new CustomEvent('__darkreader__addUndefinedResolver', { detail: { tag: tag } }));
- }
- else {
- var checkIfDefined_1 = function () {
- var elements = undefinedGroups.get(tag);
- if (elements && elements.size > 0) {
- if (elements.values().next().value.matches(':defined')) {
- resolve();
- }
- else {
- requestAnimationFrame(checkIfDefined_1);
- }
- }
- };
- requestAnimationFrame(checkIfDefined_1);
- }
- })];
- });
- });
- }
- function watchWhenCustomElementsDefined(callback) {
- elementsDefinitionCallback = callback;
- }
- function unsubscribeFromDefineCustomElements() {
- elementsDefinitionCallback = null;
- undefinedGroups.clear();
- document.removeEventListener('__darkreader__isDefined', handleIsDefined);
- }
- function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) {
- stopWatchingForStyleChanges();
- var prevStyles = new Set(currentStyles);
- var prevStyleSiblings = new WeakMap();
- var nextStyleSiblings = new WeakMap();
- function saveStylePosition(style) {
- prevStyleSiblings.set(style, style.previousElementSibling);
- nextStyleSiblings.set(style, style.nextElementSibling);
- }
- function forgetStylePosition(style) {
- prevStyleSiblings.delete(style);
- nextStyleSiblings.delete(style);
- }
- function didStylePositionChange(style) {
- return (style.previousElementSibling !== prevStyleSiblings.get(style) ||
- style.nextElementSibling !== nextStyleSiblings.get(style));
- }
- currentStyles.forEach(saveStylePosition);
- function handleStyleOperations(operations) {
- var createdStyles = operations.createdStyles, removedStyles = operations.removedStyles, movedStyles = operations.movedStyles;
- createdStyles.forEach(function (s) { return saveStylePosition(s); });
- movedStyles.forEach(function (s) { return saveStylePosition(s); });
- removedStyles.forEach(function (s) { return forgetStylePosition(s); });
- createdStyles.forEach(function (s) { return prevStyles.add(s); });
- removedStyles.forEach(function (s) { return prevStyles.delete(s); });
- if (createdStyles.size + removedStyles.size + movedStyles.size > 0) {
- update({
- created: Array.from(createdStyles),
- removed: Array.from(removedStyles),
- moved: Array.from(movedStyles),
- updated: [],
- });
- }
- }
- function handleMinorTreeMutations(_a) {
- var additions = _a.additions, moves = _a.moves, deletions = _a.deletions;
- var createdStyles = new Set();
- var removedStyles = new Set();
- var movedStyles = new Set();
- additions.forEach(function (node) { return getManageableStyles(node).forEach(function (style) { return createdStyles.add(style); }); });
- deletions.forEach(function (node) { return getManageableStyles(node).forEach(function (style) { return removedStyles.add(style); }); });
- moves.forEach(function (node) { return getManageableStyles(node).forEach(function (style) { return movedStyles.add(style); }); });
- handleStyleOperations({ createdStyles: createdStyles, removedStyles: removedStyles, movedStyles: movedStyles });
- additions.forEach(function (n) {
- iterateShadowHosts(n, subscribeForShadowRootChanges);
- collectUndefinedElements(n);
- });
- }
- function handleHugeTreeMutations(root) {
- var styles = new Set(getManageableStyles(root));
- var createdStyles = new Set();
- var removedStyles = new Set();
- var movedStyles = new Set();
- styles.forEach(function (s) {
- if (!prevStyles.has(s)) {
- createdStyles.add(s);
- }
- });
- prevStyles.forEach(function (s) {
- if (!styles.has(s)) {
- removedStyles.add(s);
- }
- });
- styles.forEach(function (s) {
- if (!createdStyles.has(s) && !removedStyles.has(s) && didStylePositionChange(s)) {
- movedStyles.add(s);
- }
- });
- handleStyleOperations({ createdStyles: createdStyles, removedStyles: removedStyles, movedStyles: movedStyles });
- iterateShadowHosts(root, subscribeForShadowRootChanges);
- collectUndefinedElements(root);
- }
- function handleAttributeMutations(mutations) {
- var updatedStyles = new Set();
- var removedStyles = new Set();
- mutations.forEach(function (m) {
- var target = m.target;
- if (target.isConnected) {
- if (shouldManageStyle(target)) {
- updatedStyles.add(target);
- }
- else if (target instanceof HTMLLinkElement && target.disabled) {
- removedStyles.add(target);
- }
- }
- });
- if (updatedStyles.size + removedStyles.size > 0) {
- update({
- updated: Array.from(updatedStyles),
- created: [],
- removed: Array.from(removedStyles),
- moved: [],
- });
- }
- }
- function observe(root) {
- var treeObserver = createOptimizedTreeObserver(root, {
- onMinorMutations: handleMinorTreeMutations,
- onHugeMutations: handleHugeTreeMutations,
- });
- var attrObserver = new MutationObserver(handleAttributeMutations);
- attrObserver.observe(root, { attributes: true, attributeFilter: ['rel', 'disabled', 'media'], subtree: true });
- observers.push(treeObserver, attrObserver);
- observedRoots.add(root);
- }
- function subscribeForShadowRootChanges(node) {
- var shadowRoot = node.shadowRoot;
- if (shadowRoot == null || observedRoots.has(shadowRoot)) {
- return;
- }
- observe(shadowRoot);
- shadowRootDiscovered(shadowRoot);
- }
- observe(document);
- iterateShadowHosts(document.documentElement, subscribeForShadowRootChanges);
- watchWhenCustomElementsDefined(function (hosts) {
- var newStyles = [];
- hosts.forEach(function (host) { return push(newStyles, getManageableStyles(host.shadowRoot)); });
- update({ created: newStyles, updated: [], removed: [], moved: [] });
- hosts.forEach(function (host) {
- var shadowRoot = host.shadowRoot;
- if (shadowRoot == null) {
- return;
- }
- subscribeForShadowRootChanges(host);
- iterateShadowHosts(shadowRoot, subscribeForShadowRootChanges);
- collectUndefinedElements(shadowRoot);
- });
- });
- document.addEventListener('__darkreader__isDefined', handleIsDefined);
- collectUndefinedElements(document);
- }
- function resetObservers() {
- observers.forEach(function (o) { return o.disconnect(); });
- observers.splice(0, observers.length);
- observedRoots = new WeakSet();
- }
- function stopWatchingForStyleChanges() {
- resetObservers();
- unsubscribeFromDefineCustomElements();
- }
- function hexify(number) {
- return ((number < 16 ? '0' : '') + number.toString(16));
- }
- function generateUID() {
- if ('randomUUID' in crypto) {
- var uuid = crypto.randomUUID();
- return uuid.substring(0, 8) + uuid.substring(9, 13) + uuid.substring(14, 18) + uuid.substring(19, 23) + uuid.substring(24);
- }
- return Array.from(crypto.getRandomValues(new Uint8Array(16))).map(function (x) { return hexify(x); }).join('');
- }
- var adoptedStyleOverrides = new WeakMap();
- var overrideList = new WeakSet();
- function createAdoptedStyleSheetOverride(node) {
- var cancelAsyncOperations = false;
- function injectSheet(sheet, override) {
- var newSheets = __spreadArray([], __read(node.adoptedStyleSheets), false);
- var sheetIndex = newSheets.indexOf(sheet);
- var existingIndex = newSheets.indexOf(override);
- if (sheetIndex === existingIndex - 1) {
- return;
- }
- if (existingIndex >= 0) {
- newSheets.splice(existingIndex, 1);
- }
- newSheets.splice(sheetIndex + 1, 0, override);
- node.adoptedStyleSheets = newSheets;
- }
- function destroy() {
- cancelAsyncOperations = true;
- var newSheets = __spreadArray([], __read(node.adoptedStyleSheets), false);
- node.adoptedStyleSheets.forEach(function (adoptedStyleSheet) {
- if (overrideList.has(adoptedStyleSheet)) {
- var existingIndex = newSheets.indexOf(adoptedStyleSheet);
- if (existingIndex >= 0) {
- newSheets.splice(existingIndex, 1);
- }
- adoptedStyleOverrides.delete(adoptedStyleSheet);
- overrideList.delete(adoptedStyleSheet);
- }
- });
- node.adoptedStyleSheets = newSheets;
- }
- function render(theme, ignoreImageAnalysis) {
- node.adoptedStyleSheets.forEach(function (sheet) {
- if (overrideList.has(sheet)) {
- return;
- }
- var rules = sheet.rules;
- var override = new CSSStyleSheet();
- function prepareOverridesSheet() {
- for (var i = override.cssRules.length - 1; i >= 0; i--) {
- override.deleteRule(i);
- }
- injectSheet(sheet, override);
- adoptedStyleOverrides.set(sheet, override);
- overrideList.add(override);
- return override;
- }
- var sheetModifier = createStyleSheetModifier();
- sheetModifier.modifySheet({
- prepareSheet: prepareOverridesSheet,
- sourceCSSRules: rules,
- theme: theme,
- ignoreImageAnalysis: ignoreImageAnalysis,
- force: false,
- isAsyncCancelled: function () { return cancelAsyncOperations; },
- });
- });
- }
- return {
- render: render,
- destroy: destroy
- };
- }
- function injectProxy(enableStyleSheetsProxy) {
- document.dispatchEvent(new CustomEvent('__darkreader__inlineScriptsAllowed'));
- var addRuleDescriptor = Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype, 'addRule');
- var insertRuleDescriptor = Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype, 'insertRule');
- var deleteRuleDescriptor = Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype, 'deleteRule');
- var removeRuleDescriptor = Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype, 'removeRule');
- var documentStyleSheetsDescriptor = enableStyleSheetsProxy ?
- Object.getOwnPropertyDescriptor(Document.prototype, 'styleSheets') : null;
- var shouldWrapHTMLElement = [
- 'baidu.com',
- 'baike.baidu.com',
- 'ditu.baidu.com',
- 'map.baidu.com',
- 'maps.baidu.com',
- 'haokan.baidu.com',
- 'pan.baidu.com',
- 'passport.baidu.com',
- 'tieba.baidu.com',
- 'www.baidu.com'
- ].includes(location.hostname);
- var getElementsByTagNameDescriptor = shouldWrapHTMLElement ?
- Object.getOwnPropertyDescriptor(Element.prototype, 'getElementsByTagName') : null;
- var cleanUp = function () {
- Object.defineProperty(CSSStyleSheet.prototype, 'addRule', addRuleDescriptor);
- Object.defineProperty(CSSStyleSheet.prototype, 'insertRule', insertRuleDescriptor);
- Object.defineProperty(CSSStyleSheet.prototype, 'deleteRule', deleteRuleDescriptor);
- Object.defineProperty(CSSStyleSheet.prototype, 'removeRule', removeRuleDescriptor);
- document.removeEventListener('__darkreader__cleanUp', cleanUp);
- document.removeEventListener('__darkreader__addUndefinedResolver', addUndefinedResolver);
- if (enableStyleSheetsProxy) {
- Object.defineProperty(Document.prototype, 'styleSheets', documentStyleSheetsDescriptor);
- }
- if (shouldWrapHTMLElement) {
- Object.defineProperty(Element.prototype, 'getElementsByTagName', getElementsByTagNameDescriptor);
- }
- };
- var addUndefinedResolver = function (e) {
- customElements.whenDefined(e.detail.tag).then(function () {
- document.dispatchEvent(new CustomEvent('__darkreader__isDefined', { detail: { tag: e.detail.tag } }));
- });
- };
- document.addEventListener('__darkreader__cleanUp', cleanUp);
- document.addEventListener('__darkreader__addUndefinedResolver', addUndefinedResolver);
- var updateSheetEvent = new Event('__darkreader__updateSheet');
- function proxyAddRule(selector, style, index) {
- addRuleDescriptor.value.call(this, selector, style, index);
- if (this.ownerNode && !this.ownerNode.classList.contains('darkreader')) {
- this.ownerNode.dispatchEvent(updateSheetEvent);
- }
- return -1;
- }
- function proxyInsertRule(rule, index) {
- var returnValue = insertRuleDescriptor.value.call(this, rule, index);
- if (this.ownerNode && !this.ownerNode.classList.contains('darkreader')) {
- this.ownerNode.dispatchEvent(updateSheetEvent);
- }
- return returnValue;
- }
- function proxyDeleteRule(index) {
- deleteRuleDescriptor.value.call(this, index);
- if (this.ownerNode && !this.ownerNode.classList.contains('darkreader')) {
- this.ownerNode.dispatchEvent(updateSheetEvent);
- }
- }
- function proxyRemoveRule(index) {
- removeRuleDescriptor.value.call(this, index);
- if (this.ownerNode && !this.ownerNode.classList.contains('darkreader')) {
- this.ownerNode.dispatchEvent(updateSheetEvent);
- }
- }
- function proxyDocumentStyleSheets() {
- var _this = this;
- var getCurrentValue = function () {
- var docSheets = documentStyleSheetsDescriptor.get.call(_this);
- var filteredSheets = __spreadArray([], __read(docSheets), false).filter(function (styleSheet) {
- return !styleSheet.ownerNode.classList.contains('darkreader');
- });
- filteredSheets.item = function (item) {
- return filteredSheets[item];
- };
- return Object.setPrototypeOf(filteredSheets, StyleSheetList.prototype);
- };
- var elements = getCurrentValue();
- var styleSheetListBehavior = {
- get: function (_, property) {
- return getCurrentValue()[property];
- }
- };
- elements = new Proxy(elements, styleSheetListBehavior);
- return elements;
- }
- function proxyGetElementsByTagName(tagName) {
- var _this = this;
- if (tagName !== 'style') {
- return getElementsByTagNameDescriptor.value.call(this, tagName);
- }
- var getCurrentElementValue = function () {
- var elements = getElementsByTagNameDescriptor.value.call(_this, tagName);
- return Object.setPrototypeOf(__spreadArray([], __read(elements), false).filter(function (element) {
- return !element.classList.contains('darkreader');
- }), NodeList.prototype);
- };
- var elements = getCurrentElementValue();
- var nodeListBehavior = {
- get: function (_, property) {
- return getCurrentElementValue()[Number(property) || property];
- }
- };
- elements = new Proxy(elements, nodeListBehavior);
- return elements;
- }
- Object.defineProperty(CSSStyleSheet.prototype, 'addRule', Object.assign({}, addRuleDescriptor, { value: proxyAddRule }));
- Object.defineProperty(CSSStyleSheet.prototype, 'insertRule', Object.assign({}, insertRuleDescriptor, { value: proxyInsertRule }));
- Object.defineProperty(CSSStyleSheet.prototype, 'deleteRule', Object.assign({}, deleteRuleDescriptor, { value: proxyDeleteRule }));
- Object.defineProperty(CSSStyleSheet.prototype, 'removeRule', Object.assign({}, removeRuleDescriptor, { value: proxyRemoveRule }));
- if (enableStyleSheetsProxy) {
- Object.defineProperty(Document.prototype, 'styleSheets', Object.assign({}, documentStyleSheetsDescriptor, { get: proxyDocumentStyleSheets }));
- }
- if (shouldWrapHTMLElement) {
- Object.defineProperty(Element.prototype, 'getElementsByTagName', Object.assign({}, getElementsByTagNameDescriptor, { value: proxyGetElementsByTagName }));
- }
- }
- var INSTANCE_ID = generateUID();
- var styleManagers = new Map();
- var adoptedStyleManagers = [];
- var filter = null;
- var fixes = null;
- var isIFrame$1 = null;
- var ignoredImageAnalysisSelectors = null;
- var ignoredInlineSelectors = null;
- function createOrUpdateStyle(className, root) {
- if (root === void 0) { root = document.head || document; }
- var element = root.querySelector(".".concat(className));
- if (!element) {
- element = document.createElement('style');
- element.classList.add('darkreader');
- element.classList.add(className);
- element.media = 'screen';
- element.textContent = '';
- }
- return element;
- }
- function createOrUpdateScript(className, root) {
- if (root === void 0) { root = document.head || document; }
- var element = root.querySelector(".".concat(className));
- if (!element) {
- element = document.createElement('script');
- element.classList.add('darkreader');
- element.classList.add(className);
- }
- return element;
- }
- var nodePositionWatchers = new Map();
- function setupNodePositionWatcher(node, alias) {
- nodePositionWatchers.has(alias) && nodePositionWatchers.get(alias).stop();
- nodePositionWatchers.set(alias, watchForNodePosition(node, 'parent'));
- }
- function stopStylePositionWatchers() {
- forEach(nodePositionWatchers.values(), function (watcher) { return watcher.stop(); });
- nodePositionWatchers.clear();
- }
- function createStaticStyleOverrides() {
- var fallbackStyle = createOrUpdateStyle('darkreader--fallback', document);
- fallbackStyle.textContent = getModifiedFallbackStyle(filter, { strict: true });
- document.head.insertBefore(fallbackStyle, document.head.firstChild);
- setupNodePositionWatcher(fallbackStyle, 'fallback');
- var userAgentStyle = createOrUpdateStyle('darkreader--user-agent');
- userAgentStyle.textContent = getModifiedUserAgentStyle(filter, isIFrame$1, filter.styleSystemControls);
- document.head.insertBefore(userAgentStyle, fallbackStyle.nextSibling);
- setupNodePositionWatcher(userAgentStyle, 'user-agent');
- var textStyle = createOrUpdateStyle('darkreader--text');
- if (filter.useFont || filter.textStroke > 0) {
- textStyle.textContent = createTextStyle(filter);
- }
- else {
- textStyle.textContent = '';
- }
- document.head.insertBefore(textStyle, fallbackStyle.nextSibling);
- setupNodePositionWatcher(textStyle, 'text');
- var invertStyle = createOrUpdateStyle('darkreader--invert');
- if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) {
- invertStyle.textContent = [
- "".concat(fixes.invert.join(', '), " {"),
- " filter: ".concat(getCSSFilterValue(__assign(__assign({}, filter), { contrast: filter.mode === 0 ? filter.contrast : clamp(filter.contrast - 10, 0, 100) })), " !important;"),
- '}',
- ].join('\n');
- }
- else {
- invertStyle.textContent = '';
- }
- document.head.insertBefore(invertStyle, textStyle.nextSibling);
- setupNodePositionWatcher(invertStyle, 'invert');
- var inlineStyle = createOrUpdateStyle('darkreader--inline');
- inlineStyle.textContent = getInlineOverrideStyle();
- document.head.insertBefore(inlineStyle, invertStyle.nextSibling);
- setupNodePositionWatcher(inlineStyle, 'inline');
- var overrideStyle = createOrUpdateStyle('darkreader--override');
- overrideStyle.textContent = fixes && fixes.css ? replaceCSSTemplates(fixes.css) : '';
- document.head.appendChild(overrideStyle);
- setupNodePositionWatcher(overrideStyle, 'override');
- var variableStyle = createOrUpdateStyle('darkreader--variables');
- var selectionColors = getSelectionColor(filter);
- var darkSchemeBackgroundColor = filter.darkSchemeBackgroundColor, darkSchemeTextColor = filter.darkSchemeTextColor, lightSchemeBackgroundColor = filter.lightSchemeBackgroundColor, lightSchemeTextColor = filter.lightSchemeTextColor, mode = filter.mode;
- var schemeBackgroundColor = mode === 0 ? lightSchemeBackgroundColor : darkSchemeBackgroundColor;
- var schemeTextColor = mode === 0 ? lightSchemeTextColor : darkSchemeTextColor;
- schemeBackgroundColor = modifyBackgroundColor(parse(schemeBackgroundColor), filter);
- schemeTextColor = modifyForegroundColor(parse(schemeTextColor), filter);
- variableStyle.textContent = [
- ":root {",
- " --darkreader-neutral-background: ".concat(schemeBackgroundColor, ";"),
- " --darkreader-neutral-text: ".concat(schemeTextColor, ";"),
- " --darkreader-selection-background: ".concat(selectionColors.backgroundColorSelection, ";"),
- " --darkreader-selection-text: ".concat(selectionColors.foregroundColorSelection, ";"),
- "}"
- ].join('\n');
- document.head.insertBefore(variableStyle, inlineStyle.nextSibling);
- setupNodePositionWatcher(variableStyle, 'variables');
- var rootVarsStyle = createOrUpdateStyle('darkreader--root-vars');
- document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling);
- var proxyScript = createOrUpdateScript('darkreader--proxy');
- proxyScript.append("(".concat(injectProxy, ")(!").concat(fixes && fixes.disableStyleSheetsProxy, ")"));
- document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling);
- proxyScript.remove();
- }
- var shadowRootsWithOverrides = new Set();
- function createShadowStaticStyleOverrides(root) {
- var inlineStyle = createOrUpdateStyle('darkreader--inline', root);
- inlineStyle.textContent = getInlineOverrideStyle();
- root.insertBefore(inlineStyle, root.firstChild);
- var overrideStyle = createOrUpdateStyle('darkreader--override', root);
- overrideStyle.textContent = fixes && fixes.css ? replaceCSSTemplates(fixes.css) : '';
- root.insertBefore(overrideStyle, inlineStyle.nextSibling);
- var invertStyle = createOrUpdateStyle('darkreader--invert', root);
- if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) {
- invertStyle.textContent = [
- "".concat(fixes.invert.join(', '), " {"),
- " filter: ".concat(getCSSFilterValue(__assign(__assign({}, filter), { contrast: filter.mode === 0 ? filter.contrast : clamp(filter.contrast - 10, 0, 100) })), " !important;"),
- '}',
- ].join('\n');
- }
- else {
- invertStyle.textContent = '';
- }
- root.insertBefore(invertStyle, overrideStyle.nextSibling);
- shadowRootsWithOverrides.add(root);
- }
- function replaceCSSTemplates($cssText) {
- return $cssText.replace(/\${(.+?)}/g, function (_, $color) {
- var color = tryParseColor($color);
- if (color) {
- return modifyColor(color, filter);
- }
- logWarn("Couldn't parse CSSTemplate's color.");
- return $color;
- });
- }
- function cleanFallbackStyle() {
- var fallback = document.querySelector('.darkreader--fallback');
- if (fallback) {
- fallback.textContent = '';
- }
- }
- function createDynamicStyleOverrides() {
- cancelRendering();
- var allStyles = getManageableStyles(document);
- var newManagers = allStyles
- .filter(function (style) { return !styleManagers.has(style); })
- .map(function (style) { return createManager(style); });
- newManagers
- .map(function (manager) { return manager.details({ secondRound: false }); })
- .filter(function (detail) { return detail && detail.rules.length > 0; })
- .forEach(function (detail) {
- variablesStore.addRulesForMatching(detail.rules);
- });
- variablesStore.matchVariablesAndDependants();
- variablesStore.setOnRootVariableChange(function () {
- variablesStore.putRootVars(document.head.querySelector('.darkreader--root-vars'), filter);
- });
- variablesStore.putRootVars(document.head.querySelector('.darkreader--root-vars'), filter);
- styleManagers.forEach(function (manager) { return manager.render(filter, ignoredImageAnalysisSelectors); });
- if (loadingStyles.size === 0) {
- cleanFallbackStyle();
- }
- newManagers.forEach(function (manager) { return manager.watch(); });
- var inlineStyleElements = toArray(document.querySelectorAll(INLINE_STYLE_SELECTOR));
- iterateShadowHosts(document.documentElement, function (host) {
- createShadowStaticStyleOverrides(host.shadowRoot);
- var elements = host.shadowRoot.querySelectorAll(INLINE_STYLE_SELECTOR);
- if (elements.length > 0) {
- push(inlineStyleElements, elements);
- }
- });
- inlineStyleElements.forEach(function (el) { return overrideInlineStyle(el, filter, ignoredInlineSelectors, ignoredImageAnalysisSelectors); });
- handleAdoptedStyleSheets(document);
- }
- var loadingStylesCounter = 0;
- var loadingStyles = new Set();
- function createManager(element) {
- var loadingStyleId = ++loadingStylesCounter;
- logInfo("New manager for element, with loadingStyleID ".concat(loadingStyleId), element);
- function loadingStart() {
- if (!isDOMReady() || !didDocumentShowUp) {
- loadingStyles.add(loadingStyleId);
- logInfo("Current amount of styles loading: ".concat(loadingStyles.size));
- var fallbackStyle = document.querySelector('.darkreader--fallback');
- if (!fallbackStyle.textContent) {
- fallbackStyle.textContent = getModifiedFallbackStyle(filter, { strict: false });
- }
- }
- }
- function loadingEnd() {
- loadingStyles.delete(loadingStyleId);
- logInfo("Removed loadingStyle ".concat(loadingStyleId, ", now awaiting: ").concat(loadingStyles.size));
- logInfo("To-do to be loaded", loadingStyles);
- if (loadingStyles.size === 0 && isDOMReady()) {
- cleanFallbackStyle();
- }
- }
- function update() {
- var details = manager.details({ secondRound: true });
- if (!details) {
- return;
- }
- variablesStore.addRulesForMatching(details.rules);
- variablesStore.matchVariablesAndDependants();
- manager.render(filter, ignoredImageAnalysisSelectors);
- }
- var manager = manageStyle(element, { update: update, loadingStart: loadingStart, loadingEnd: loadingEnd });
- styleManagers.set(element, manager);
- return manager;
- }
- function removeManager(element) {
- var manager = styleManagers.get(element);
- if (manager) {
- manager.destroy();
- styleManagers.delete(element);
- }
- }
- var throttledRenderAllStyles = throttle(function (callback) {
- styleManagers.forEach(function (manager) { return manager.render(filter, ignoredImageAnalysisSelectors); });
- adoptedStyleManagers.forEach(function (manager) { return manager.render(filter, ignoredImageAnalysisSelectors); });
- callback && callback();
- });
- var cancelRendering = function () {
- throttledRenderAllStyles.cancel();
- };
- function onDOMReady() {
- if (loadingStyles.size === 0) {
- cleanFallbackStyle();
- return;
- }
- logWarn("DOM is ready, but still have styles being loaded.", loadingStyles);
- }
- var documentVisibilityListener = null;
- var didDocumentShowUp = !document.hidden;
- function watchForDocumentVisibility(callback) {
- var alreadyWatching = Boolean(documentVisibilityListener);
- documentVisibilityListener = function () {
- if (!document.hidden) {
- stopWatchingForDocumentVisibility();
- callback();
- didDocumentShowUp = true;
- }
- };
- if (!alreadyWatching) {
- document.addEventListener('visibilitychange', documentVisibilityListener);
- }
- }
- function stopWatchingForDocumentVisibility() {
- document.removeEventListener('visibilitychange', documentVisibilityListener);
- documentVisibilityListener = null;
- }
- function createThemeAndWatchForUpdates() {
- createStaticStyleOverrides();
- function runDynamicStyle() {
- createDynamicStyleOverrides();
- watchForUpdates();
- }
- if (document.hidden && !filter.immediateModify) {
- watchForDocumentVisibility(runDynamicStyle);
- }
- else {
- runDynamicStyle();
- }
- changeMetaThemeColorWhenAvailable(filter);
- }
- function handleAdoptedStyleSheets(node) {
- try {
- if (Array.isArray(node.adoptedStyleSheets)) {
- if (node.adoptedStyleSheets.length > 0) {
- var newManger = createAdoptedStyleSheetOverride(node);
- adoptedStyleManagers.push(newManger);
- newManger.render(filter, ignoredImageAnalysisSelectors);
- }
- }
- }
- catch (err) {
- logWarn('Error occured in handleAdoptedStyleSheets: ', err);
- }
- }
- function watchForUpdates() {
- var managedStyles = Array.from(styleManagers.keys());
- watchForStyleChanges(managedStyles, function (_a) {
- var created = _a.created, updated = _a.updated, removed = _a.removed, moved = _a.moved;
- var stylesToRemove = removed;
- var stylesToManage = created.concat(updated).concat(moved)
- .filter(function (style) { return !styleManagers.has(style); });
- var stylesToRestore = moved
- .filter(function (style) { return styleManagers.has(style); });
- logInfo("Styles to be removed:", stylesToRemove);
- stylesToRemove.forEach(function (style) { return removeManager(style); });
- var newManagers = stylesToManage
- .map(function (style) { return createManager(style); });
- newManagers
- .map(function (manager) { return manager.details({ secondRound: false }); })
- .filter(function (detail) { return detail && detail.rules.length > 0; })
- .forEach(function (detail) {
- variablesStore.addRulesForMatching(detail.rules);
- });
- variablesStore.matchVariablesAndDependants();
- newManagers.forEach(function (manager) { return manager.render(filter, ignoredImageAnalysisSelectors); });
- newManagers.forEach(function (manager) { return manager.watch(); });
- stylesToRestore.forEach(function (style) { return styleManagers.get(style).restore(); });
- }, function (shadowRoot) {
- createShadowStaticStyleOverrides(shadowRoot);
- handleAdoptedStyleSheets(shadowRoot);
- });
- watchForInlineStyles(function (element) {
- overrideInlineStyle(element, filter, ignoredInlineSelectors, ignoredImageAnalysisSelectors);
- if (element === document.documentElement) {
- var styleAttr = element.getAttribute('style') || '';
- if (styleAttr.includes('--')) {
- variablesStore.matchVariablesAndDependants();
- variablesStore.putRootVars(document.head.querySelector('.darkreader--root-vars'), filter);
- }
- }
- }, function (root) {
- createShadowStaticStyleOverrides(root);
- var inlineStyleElements = root.querySelectorAll(INLINE_STYLE_SELECTOR);
- if (inlineStyleElements.length > 0) {
- forEach(inlineStyleElements, function (el) { return overrideInlineStyle(el, filter, ignoredInlineSelectors, ignoredImageAnalysisSelectors); });
- }
- });
- addDOMReadyListener(onDOMReady);
- }
- function stopWatchingForUpdates() {
- styleManagers.forEach(function (manager) { return manager.pause(); });
- stopStylePositionWatchers();
- stopWatchingForStyleChanges();
- stopWatchingForInlineStyles();
- removeDOMReadyListener(onDOMReady);
- cleanReadyStateCompleteListeners();
- }
- function createDarkReaderInstanceMarker() {
- var metaElement = document.createElement('meta');
- metaElement.name = 'darkreader';
- metaElement.content = INSTANCE_ID;
- document.head.appendChild(metaElement);
- }
- function isAnotherDarkReaderInstanceActive() {
- var meta = document.querySelector('meta[name="darkreader"]');
- if (meta) {
- if (meta.content !== INSTANCE_ID) {
- return true;
- }
- return false;
- }
- createDarkReaderInstanceMarker();
- return false;
- }
- function createOrUpdateDynamicTheme(filterConfig, dynamicThemeFixes, iframe) {
- filter = filterConfig;
- fixes = dynamicThemeFixes;
- if (fixes) {
- ignoredImageAnalysisSelectors = Array.isArray(fixes.ignoreImageAnalysis) ? fixes.ignoreImageAnalysis : [];
- ignoredInlineSelectors = Array.isArray(fixes.ignoreInlineStyle) ? fixes.ignoreInlineStyle : [];
- }
- else {
- ignoredImageAnalysisSelectors = [];
- ignoredInlineSelectors = [];
- }
- if (filter.immediateModify) {
- setIsDOMReady(function () {
- return true;
- });
- }
- isIFrame$1 = iframe;
- if (document.head) {
- if (isAnotherDarkReaderInstanceActive()) {
- return;
- }
- document.documentElement.setAttribute('data-darkreader-mode', 'dynamic');
- document.documentElement.setAttribute('data-darkreader-scheme', filter.mode ? 'dark' : 'dimmed');
- createThemeAndWatchForUpdates();
- }
- else {
- if (!isFirefox) {
- var fallbackStyle = createOrUpdateStyle('darkreader--fallback');
- document.documentElement.appendChild(fallbackStyle);
- fallbackStyle.textContent = getModifiedFallbackStyle(filter, { strict: true });
- }
- var headObserver_1 = new MutationObserver(function () {
- if (document.head) {
- headObserver_1.disconnect();
- if (isAnotherDarkReaderInstanceActive()) {
- removeDynamicTheme();
- return;
- }
- createThemeAndWatchForUpdates();
- }
- });
- headObserver_1.observe(document, { childList: true, subtree: true });
- }
- }
- function removeProxy() {
- document.dispatchEvent(new CustomEvent('__darkreader__cleanUp'));
- removeNode(document.head.querySelector('.darkreader--proxy'));
- }
- function removeDynamicTheme() {
- document.documentElement.removeAttribute("data-darkreader-mode");
- document.documentElement.removeAttribute("data-darkreader-scheme");
- cleanDynamicThemeCache();
- removeNode(document.querySelector('.darkreader--fallback'));
- if (document.head) {
- restoreMetaThemeColor();
- removeNode(document.head.querySelector('.darkreader--user-agent'));
- removeNode(document.head.querySelector('.darkreader--text'));
- removeNode(document.head.querySelector('.darkreader--invert'));
- removeNode(document.head.querySelector('.darkreader--inline'));
- removeNode(document.head.querySelector('.darkreader--override'));
- removeNode(document.head.querySelector('.darkreader--variables'));
- removeNode(document.head.querySelector('.darkreader--root-vars'));
- removeNode(document.head.querySelector('meta[name="darkreader"]'));
- removeProxy();
- }
- shadowRootsWithOverrides.forEach(function (root) {
- removeNode(root.querySelector('.darkreader--inline'));
- removeNode(root.querySelector('.darkreader--override'));
- });
- shadowRootsWithOverrides.clear();
- forEach(styleManagers.keys(), function (el) { return removeManager(el); });
- loadingStyles.clear();
- cleanLoadingLinks();
- forEach(document.querySelectorAll('.darkreader'), removeNode);
- adoptedStyleManagers.forEach(function (manager) {
- manager.destroy();
- });
- adoptedStyleManagers.splice(0);
- }
- function cleanDynamicThemeCache() {
- variablesStore.clear();
- parsedURLCache.clear();
- stopWatchingForDocumentVisibility();
- cancelRendering();
- stopWatchingForUpdates();
- cleanModificationCache();
- }
- var blobRegex = /url\(\"(blob\:.*?)\"\)/g;
- function replaceBlobs(text) {
- return __awaiter(this, void 0, void 0, function () {
- var promises, data;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- promises = [];
- getMatches(blobRegex, text, 1).forEach(function (url) {
- var promise = loadAsDataURL(url);
- promises.push(promise);
- });
- return [4, Promise.all(promises)];
- case 1:
- data = _a.sent();
- return [2, text.replace(blobRegex, function () { return "url(\"".concat(data.shift(), "\")"); })];
- }
- });
- });
- }
- var banner = "/*\n _______\n / \\\n .==. .==.\n (( ))==(( ))\n / \"==\" \"==\"\\\n /____|| || ||___\\\n ________ ____ ________ ___ ___\n | ___ \\ / \\ | ___ \\ | | / /\n | | \\ \\ / /\\ \\ | | \\ \\| |_/ /\n | | ) / /__\\ \\ | |__/ /| ___ \\\n | |__/ / ______ \\| ____ \\| | \\ \\\n_______|_______/__/ ____ \\__\\__|___\\__\\__|___\\__\\____\n| ___ \\ | ____/ / \\ | ___ \\ | ____| ___ \\\n| | \\ \\| |___ / /\\ \\ | | \\ \\| |___| | \\ \\\n| |__/ /| ____/ /__\\ \\ | | ) | ____| |__/ /\n| ____ \\| |__/ ______ \\| |__/ /| |___| ____ \\\n|__| \\__\\____/__/ \\__\\_______/ |______|__| \\__\\\n https://darkreader.org\n*/\n\n/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/master/LICENSE */\n";
- function collectCSS() {
- return __awaiter(this, void 0, void 0, function () {
- function addStaticCSS(selector, comment) {
- var staticStyle = document.querySelector(selector);
- if (staticStyle && staticStyle.textContent) {
- css.push("/* ".concat(comment, " */"));
- css.push(staticStyle.textContent);
- css.push('');
- }
- }
- var css, modifiedCSS, formattedCSS, _a, _b;
- return __generator(this, function (_c) {
- switch (_c.label) {
- case 0:
- css = [banner];
- addStaticCSS('.darkreader--fallback', 'Fallback Style');
- addStaticCSS('.darkreader--user-agent', 'User-Agent Style');
- addStaticCSS('.darkreader--text', 'Text Style');
- addStaticCSS('.darkreader--invert', 'Invert Style');
- addStaticCSS('.darkreader--variables', 'Variables Style');
- modifiedCSS = [];
- document.querySelectorAll('.darkreader--sync').forEach(function (element) {
- forEach(element.sheet.cssRules, function (rule) {
- rule && rule.cssText && modifiedCSS.push(rule.cssText);
- });
- });
- if (!modifiedCSS.length) return [3, 2];
- formattedCSS = formatCSS(modifiedCSS.join('\n'));
- css.push('/* Modified CSS */');
- _b = (_a = css).push;
- return [4, replaceBlobs(formattedCSS)];
- case 1:
- _b.apply(_a, [_c.sent()]);
- css.push('');
- _c.label = 2;
- case 2:
- addStaticCSS('.darkreader--override', 'Override Style');
- return [2, css.join('\n')];
- }
- });
- });
- }
- var isDarkReaderEnabled = false;
- var isIFrame = (function () {
- try {
- return window.self !== window.top;
- }
- catch (err) {
- console.warn(err);
- return true;
- }
- })();
- function enable(themeOptions, fixes) {
- if (themeOptions === void 0) { themeOptions = {}; }
- if (fixes === void 0) { fixes = null; }
- var theme = __assign(__assign({}, DEFAULT_THEME), themeOptions);
- if (theme.engine !== ThemeEngines.dynamicTheme) {
- throw new Error('Theme engine is not supported.');
- }
- createOrUpdateDynamicTheme(theme, fixes, isIFrame);
- isDarkReaderEnabled = true;
- }
- function isEnabled() {
- return isDarkReaderEnabled;
- }
- function disable() {
- removeDynamicTheme();
- isDarkReaderEnabled = false;
- }
- var darkScheme = matchMedia('(prefers-color-scheme: dark)');
- var store = {
- themeOptions: null,
- fixes: null,
- };
- function handleColorScheme() {
- if (darkScheme.matches) {
- enable(store.themeOptions, store.fixes);
- }
- else {
- disable();
- }
- }
- function auto(themeOptions, fixes) {
- if (themeOptions === void 0) { themeOptions = {}; }
- if (fixes === void 0) { fixes = null; }
- if (themeOptions) {
- store = { themeOptions: themeOptions, fixes: fixes };
- handleColorScheme();
- if (isMatchMediaChangeEventListenerSupported) {
- darkScheme.addEventListener('change', handleColorScheme);
- }
- else {
- darkScheme.addListener(handleColorScheme);
- }
- }
- else {
- if (isMatchMediaChangeEventListenerSupported) {
- darkScheme.removeEventListener('change', handleColorScheme);
- }
- else {
- darkScheme.removeListener(handleColorScheme);
- }
- disable();
- }
- }
- function exportGeneratedCSS() {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4, collectCSS()];
- case 1: return [2, _a.sent()];
- }
- });
- });
- }
- var setFetchMethod = setFetchMethod$1;
- exports.auto = auto;
- exports.disable = disable;
- exports.enable = enable;
- exports.exportGeneratedCSS = exportGeneratedCSS;
- exports.isEnabled = isEnabled;
- exports.setFetchMethod = setFetchMethod;
- Object.defineProperty(exports, '__esModule', { value: true });
- }));
|