From fa7c7280715c88e5d59a2151573c5bc35cf3f230 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Thu, 17 Jan 2019 00:28:29 -0500 Subject: Push new loggers --- .../main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt | 6 ++++-- .../kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt | 2 +- app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt index 8d849bff..f4c1244f 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt @@ -27,6 +27,7 @@ import ca.allanwang.kau.about.LibraryIItem import ca.allanwang.kau.adapters.FastItemThemedAdapter import ca.allanwang.kau.adapters.ThemableIItem import ca.allanwang.kau.adapters.ThemableIItemDelegate +import ca.allanwang.kau.logging.KL import ca.allanwang.kau.utils.bindView import ca.allanwang.kau.utils.dimenPixelSize import ca.allanwang.kau.utils.resolveDrawable @@ -79,7 +80,8 @@ class AboutActivity : AboutActivityBase(null, { ) val l = libs.prepareLibraries(this, include, null, false, true, true) -// l.forEach { KL.d{"Lib ${it.definedName}"} } + if (BuildConfig.DEBUG) + l.forEach { KL.d { "Lib ${it.definedName}" } } return l } @@ -155,7 +157,7 @@ class AboutActivity : AboutActivityBase(null, { val c = itemView.context val size = c.dimenPixelSize(R.dimen.kau_avatar_bounds) images = arrayOf Unit>>( - GoogleMaterial.Icon.gmd_arrow_downward to { c.startLink(R.string.github_downloads_url) }, + GoogleMaterial.Icon.gmd_file_download to { c.startLink(R.string.github_downloads_url) }, CommunityMaterial.Icon2.cmd_reddit to { c.startLink(R.string.reddit_url) }, CommunityMaterial.Icon.cmd_github_circle to { c.startLink(R.string.github_url) }, CommunityMaterial.Icon2.cmd_slack to { c.startLink(R.string.slack_url) }, diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt index b4215913..63da4f50 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt @@ -516,7 +516,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, get() = supportFragmentManager.findFragmentByTag("android:switcher:${R.id.container}:${viewPager.currentItem}") as BaseFragment override fun reloadFragment(fragment: BaseFragment) { - runOnUiThread { adapter.reloadFragment(fragment) } + adapter.reloadFragment(fragment) } inner class SectionsPagerAdapter(val pages: List) : FragmentPagerAdapter(supportFragmentManager) { diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt index 6cf6f41b..9ee34ab7 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbItem.kt @@ -46,7 +46,7 @@ enum class FbItem( FEED_TOP_STORIES(R.string.top_stories, GoogleMaterial.Icon.gmd_star, "home.php?sk=h_nor"), FRIENDS(R.string.friends, GoogleMaterial.Icon.gmd_person_add, "friends/center/requests"), GROUPS(R.string.groups, GoogleMaterial.Icon.gmd_group, "groups"), - MARKETPLACE(R.string.marketplace, CommunityMaterial.Icon2.cmd_home_currency_usd, "marketplace"), + MARKETPLACE(R.string.marketplace, GoogleMaterial.Icon.gmd_store, "marketplace"), MENU(R.string.menu, GoogleMaterial.Icon.gmd_menu, "settings", ::MenuFragment), MESSAGES(R.string.messages, MaterialDesignIconic.Icon.gmi_comments, "messages"), NOTES(R.string.notes, CommunityMaterial.Icon2.cmd_note, "notes"), -- cgit v1.2.3 From bc623f740eaf74a16eaed241448b802ff26b4197 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 22 Jan 2019 23:41:14 -0500 Subject: Catch crashes, but things will still break --- .../com/pitchedapps/frost/kotlin/Flyweight.kt | 92 ++++++++++++---------- .../pitchedapps/frost/views/FrostRecyclerView.kt | 12 ++- 2 files changed, 60 insertions(+), 44 deletions(-) (limited to 'app') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/kotlin/Flyweight.kt b/app/src/main/kotlin/com/pitchedapps/frost/kotlin/Flyweight.kt index 914ce151..56acfc11 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/kotlin/Flyweight.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/kotlin/Flyweight.kt @@ -16,11 +16,14 @@ */ package com.pitchedapps.frost.kotlin +import com.pitchedapps.frost.utils.L import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CompletableDeferred +import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job +import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.isActive import kotlinx.coroutines.launch @@ -64,57 +67,60 @@ class Flyweight( completeExceptionally(result.exceptionOrNull()!!) } + private val errHandler = CoroutineExceptionHandler { _, throwable -> L.d { "FbAuth failed ${throwable.message}" } } + init { - job = scope.launch(Dispatchers.IO) { - launch { - while (isActive) { - select { - /* - * New request received. Continuation should be fulfilled eventually - */ - actionChannel.onReceive { (key, completable) -> - val lastUpdate = conditionMap[key] - val lastResult = resultMap[key] - // Valid value, retrieved within acceptable time - if (lastResult != null && lastUpdate != null && System.currentTimeMillis() - lastUpdate < maxAge) { - completable.completeWith(lastResult) - } else { - val valueRequestPending = key in pendingMap - pendingMap.getOrPut(key) { mutableListOf() }.add(completable) - if (!valueRequestPending) - fulfill(key) + job = + scope.launch(Dispatchers.IO + SupervisorJob() + errHandler) { + launch { + while (isActive) { + select { + /* + * New request received. Continuation should be fulfilled eventually + */ + actionChannel.onReceive { (key, completable) -> + val lastUpdate = conditionMap[key] + val lastResult = resultMap[key] + // Valid value, retrieved within acceptable time + if (lastResult != null && lastUpdate != null && System.currentTimeMillis() - lastUpdate < maxAge) { + completable.completeWith(lastResult) + } else { + val valueRequestPending = key in pendingMap + pendingMap.getOrPut(key) { mutableListOf() }.add(completable) + if (!valueRequestPending) + fulfill(key) + } } - } - /* - * Invalidator received. Existing result associated with key should not be used. - * Note that any unfulfilled request and future requests should still operate, but with a new value. - */ - invalidatorChannel.onReceive { key -> - if (key !in resultMap) { - // Nothing to invalidate. - // If pending requests exist, they are already in the process of being updated. - return@onReceive + /* + * Invalidator received. Existing result associated with key should not be used. + * Note that any unfulfilled request and future requests should still operate, but with a new value. + */ + invalidatorChannel.onReceive { key -> + if (key !in resultMap) { + // Nothing to invalidate. + // If pending requests exist, they are already in the process of being updated. + return@onReceive + } + conditionMap.remove(key) + resultMap.remove(key) + if (pendingMap[key]?.isNotEmpty() == true) + // Refetch value for pending requests + fulfill(key) } - conditionMap.remove(key) - resultMap.remove(key) - if (pendingMap[key]?.isNotEmpty() == true) - // Refetch value for pending requests - fulfill(key) - } - /* - * Value request fulfilled. Should now fulfill pending requests - */ - receiverChannel.onReceive { (key, result) -> - conditionMap[key] = System.currentTimeMillis() - resultMap[key] = result - pendingMap.remove(key)?.forEach { - it.completeWith(result) + /* + * Value request fulfilled. Should now fulfill pending requests + */ + receiverChannel.onReceive { (key, result) -> + conditionMap[key] = System.currentTimeMillis() + resultMap[key] = result + pendingMap.remove(key)?.forEach { + it.completeWith(result) + } } } } } } - } } /* diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt index 860bf36c..9e0b70b2 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt @@ -27,9 +27,12 @@ import com.pitchedapps.frost.contracts.FrostContentContainer import com.pitchedapps.frost.contracts.FrostContentCore import com.pitchedapps.frost.contracts.FrostContentParent import com.pitchedapps.frost.fragments.RecyclerContentContract +import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch +import kotlinx.coroutines.supervisorScope /** * Created by Allan Wang on 2017-05-29. @@ -74,7 +77,14 @@ class FrostRecyclerView @JvmOverloads constructor( if (Prefs.animate) fadeOut(onFinish = onReloadClear) scope.launch { parent.refreshChannel.offer(true) - val loaded = recyclerContract.reload { parent.progressChannel.offer(it) } + // TODO figure out how to avoid cancelling parent + try { + supervisorScope { + recyclerContract.reload { parent.progressChannel.offer(it) } + } + } catch (e: Exception) { + + } parent.progressChannel.offer(100) parent.refreshChannel.offer(false) if (Prefs.animate) circularReveal() -- cgit v1.2.3 From e874b788753ce69ea561b41dc13dfb230c750690 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 22 Jan 2019 23:42:39 -0500 Subject: Add back runOnUiThread --- .../main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt | 2 +- app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) (limited to 'app') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt index 63da4f50..b4215913 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt @@ -516,7 +516,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, get() = supportFragmentManager.findFragmentByTag("android:switcher:${R.id.container}:${viewPager.currentItem}") as BaseFragment override fun reloadFragment(fragment: BaseFragment) { - adapter.reloadFragment(fragment) + runOnUiThread { adapter.reloadFragment(fragment) } } inner class SectionsPagerAdapter(val pages: List) : FragmentPagerAdapter(supportFragmentManager) { diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt index 9e0b70b2..b9fe69d1 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt @@ -27,10 +27,8 @@ import com.pitchedapps.frost.contracts.FrostContentContainer import com.pitchedapps.frost.contracts.FrostContentCore import com.pitchedapps.frost.contracts.FrostContentParent import com.pitchedapps.frost.fragments.RecyclerContentContract -import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.supervisorScope @@ -83,7 +81,6 @@ class FrostRecyclerView @JvmOverloads constructor( recyclerContract.reload { parent.progressChannel.offer(it) } } } catch (e: Exception) { - } parent.progressChannel.offer(100) parent.refreshChannel.offer(false) -- cgit v1.2.3 From 459359672b1f4266bc0f009c35f246fd90cce36a Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 2 Feb 2019 00:10:27 -0500 Subject: Fix crash --- .../frost/fragments/RecyclerFragmentBase.kt | 3 +- .../pitchedapps/frost/views/FrostRecyclerView.kt | 11 ++---- .../com/pitchedapps/frost/utils/CoroutineTest.kt | 45 ++++++++++++++++++++++ 3 files changed, 50 insertions(+), 9 deletions(-) (limited to 'app') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/fragments/RecyclerFragmentBase.kt b/app/src/main/kotlin/com/pitchedapps/frost/fragments/RecyclerFragmentBase.kt index 9f26f3f7..37af690b 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/fragments/RecyclerFragmentBase.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/fragments/RecyclerFragmentBase.kt @@ -30,6 +30,7 @@ import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.frostJsoup import com.pitchedapps.frost.views.FrostRecyclerView import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.isActive import kotlinx.coroutines.withContext /** @@ -53,7 +54,7 @@ abstract class RecyclerFragment> : BaseFragment(), Recycle val data = try { reloadImpl(progress) } catch (e: Exception) { - L.e(e) { "Recycler reload fail" } + L.e(e) { "Recycler reload fail $baseUrl" } null } withMainContext { diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt index b9fe69d1..ce7437a7 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostRecyclerView.kt @@ -27,10 +27,11 @@ import com.pitchedapps.frost.contracts.FrostContentContainer import com.pitchedapps.frost.contracts.FrostContentCore import com.pitchedapps.frost.contracts.FrostContentParent import com.pitchedapps.frost.fragments.RecyclerContentContract +import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -import kotlinx.coroutines.supervisorScope /** * Created by Allan Wang on 2017-05-29. @@ -75,13 +76,7 @@ class FrostRecyclerView @JvmOverloads constructor( if (Prefs.animate) fadeOut(onFinish = onReloadClear) scope.launch { parent.refreshChannel.offer(true) - // TODO figure out how to avoid cancelling parent - try { - supervisorScope { - recyclerContract.reload { parent.progressChannel.offer(it) } - } - } catch (e: Exception) { - } + recyclerContract.reload { parent.progressChannel.offer(it) } parent.progressChannel.offer(100) parent.refreshChannel.offer(false) if (Prefs.animate) circularReveal() diff --git a/app/src/test/kotlin/com/pitchedapps/frost/utils/CoroutineTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/utils/CoroutineTest.kt index fb302648..e93f507c 100644 --- a/app/src/test/kotlin/com/pitchedapps/frost/utils/CoroutineTest.kt +++ b/app/src/test/kotlin/com/pitchedapps/frost/utils/CoroutineTest.kt @@ -16,9 +16,11 @@ */ package com.pitchedapps.frost.utils +import com.pitchedapps.frost.kotlin.Flyweight import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.async import kotlinx.coroutines.channels.BroadcastChannel @@ -243,4 +245,47 @@ class CoroutineTest { ) } } + + @Test + fun exceptionChecks() { + val mainTag = "main-test" + val mainDispatcher = Executors.newSingleThreadExecutor { r -> + Thread(r, mainTag) + }.asCoroutineDispatcher() + val channel = Channel() + + val job = SupervisorJob() + + val flyweight = Flyweight(GlobalScope, 200L) { + throw java.lang.RuntimeException("Flyweight exception") + } + + suspend fun crash(): Boolean = withContext(Dispatchers.IO) { + try { + withContext(Dispatchers.Default) { + flyweight.fetch(0).await() + } + true + } catch (e: java.lang.Exception) { + false + } + } + + runBlocking(mainDispatcher + job) { + launch { + val i = channel.receive() + println("Received $i") + } + launch { + println("A") + println(crash()) + println("B") + channel.offer(1) + } +// launch { +// delay(2000) +// job.cancel() +// } + } + } } -- cgit v1.2.3 From c484c2728c1688ed695205a420eba3f2b2ba179d Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 2 Feb 2019 00:39:48 -0500 Subject: Add checks to fast fail menu --- app/src/main/assets/js/media.coffee | 3 +- app/src/main/assets/js/media.js | 12 +++---- app/src/main/assets/js/menu.coffee | 68 +++++++++++++++++++++---------------- app/src/main/assets/js/menu.js | 40 ++++++++++++++-------- 4 files changed, 72 insertions(+), 51 deletions(-) (limited to 'app') diff --git a/app/src/main/assets/js/media.coffee b/app/src/main/assets/js/media.coffee index a15a5279..e9b20ec8 100644 --- a/app/src/main/assets/js/media.coffee +++ b/app/src/main/assets/js/media.coffee @@ -1,6 +1,5 @@ # we will handle media events _frostMediaClick = (e) -> - element = e.target or e.srcElement if !element?.dataset.sigil?.toLowerCase().includes("inlinevideo") return @@ -27,4 +26,4 @@ _frostMediaClick = (e) -> e.preventDefault() return -document.addEventListener "click", _frostMediaClick, true \ No newline at end of file +document.addEventListener "click", _frostMediaClick, true diff --git a/app/src/main/assets/js/media.js b/app/src/main/assets/js/media.js index 5b1a3776..e8bf8a72 100644 --- a/app/src/main/assets/js/media.js +++ b/app/src/main/assets/js/media.js @@ -1,10 +1,9 @@ -"use strict"; - -(function () { +// Generated by CoffeeScript 2.3.2 +(function() { // we will handle media events var _frostMediaClick; - _frostMediaClick = function _frostMediaClick(e) { + _frostMediaClick = function(e) { var dataStore, element, i, ref, url; element = e.target || e.srcElement; if (!(element != null ? (ref = element.dataset.sigil) != null ? ref.toLowerCase().includes("inlinevideo") : void 0 : void 0)) { @@ -27,7 +26,7 @@ if (!url || !url.startsWith("http")) { return; } - console.log("Inline video " + url); + console.log(`Inline video ${url}`); if (typeof Frost !== "undefined" && Frost !== null ? Frost.loadVideo(url, dataStore.animatedGifVideo) : void 0) { e.stopPropagation(); e.preventDefault(); @@ -35,4 +34,5 @@ }; document.addEventListener("click", _frostMediaClick, true); -}).call(undefined); \ No newline at end of file + +}).call(this); diff --git a/app/src/main/assets/js/menu.coffee b/app/src/main/assets/js/menu.coffee index 384496f7..ebc7a879 100644 --- a/app/src/main/assets/js/menu.coffee +++ b/app/src/main/assets/js/menu.coffee @@ -1,42 +1,52 @@ # click menu and move contents to main view viewport = document.querySelector("#viewport") root = document.querySelector("#root") +menuA = document.querySelector("#bookmarks_jewel").querySelector("a") if !viewport - console.log "Menu.js: viewport is null" + console.log "Menu.js: viewport is null" + Frost?.emit 0 + return if !root - console.log "Menu.js: root is null" -y = new MutationObserver((mutations) -> - viewport.removeAttribute "style" - root.removeAttribute "style" - return + console.log "Menu.js: root is null" + Frost?.emit 0 + return +if !menuA + console.log "Menu.js: jewel is null" + Frost?.emit 0 + return + +y = new MutationObserver(() -> + viewport.removeAttribute "style" + root.removeAttribute "style" + return ) + y.observe viewport, attributes: true y.observe root, attributes: true + x = new MutationObserver(() -> - menu = document.querySelector(".mSideMenu") - if menu != null - x.disconnect() - console.log "Found side menu" - while root.firstChild - root.removeChild root.firstChild - while menu.childNodes.length - console.log "append" - viewport.appendChild menu.childNodes[0] - Frost?.emit 0 - setTimeout (-> - y.disconnect() - console.log "Unhook styler" - return - ), 500 - return + menu = document.querySelector(".mSideMenu") + if menu != null + x.disconnect() + console.log "Found side menu" + while root.firstChild + root.removeChild root.firstChild + while menu.childNodes.length + console.log "append" + viewport.appendChild menu.childNodes[0] + Frost?.emit 0 + setTimeout (-> + y.disconnect() + console.log "Unhook styler" + return + ), 500 + return ) jewel = document.querySelector("#mJewelNav") if !jewel - console.log "Menu.js: jewel is null" + console.log "Menu.js: jewel is null" x.observe jewel, - childList: true - subtree: true -menuA = document.querySelector("#bookmarks_jewel").querySelector("a") -if !menuA - console.log "Menu.js: jewel is null" -menuA.click() \ No newline at end of file + childList: true + subtree: true + +menuA.click() diff --git a/app/src/main/assets/js/menu.js b/app/src/main/assets/js/menu.js index bfdca4a3..5464865c 100644 --- a/app/src/main/assets/js/menu.js +++ b/app/src/main/assets/js/menu.js @@ -1,6 +1,5 @@ -"use strict"; - -(function () { +// Generated by CoffeeScript 2.3.2 +(function() { // click menu and move contents to main view var jewel, menuA, root, viewport, x, y; @@ -8,15 +7,33 @@ root = document.querySelector("#root"); + menuA = document.querySelector("#bookmarks_jewel").querySelector("a"); + if (!viewport) { console.log("Menu.js: viewport is null"); + if (typeof Frost !== "undefined" && Frost !== null) { + Frost.emit(0); + } + return; } if (!root) { console.log("Menu.js: root is null"); + if (typeof Frost !== "undefined" && Frost !== null) { + Frost.emit(0); + } + return; } - y = new MutationObserver(function (mutations) { + if (!menuA) { + console.log("Menu.js: jewel is null"); + if (typeof Frost !== "undefined" && Frost !== null) { + Frost.emit(0); + } + return; + } + + y = new MutationObserver(function() { viewport.removeAttribute("style"); root.removeAttribute("style"); }); @@ -29,7 +46,7 @@ attributes: true }); - x = new MutationObserver(function () { + x = new MutationObserver(function() { var menu; menu = document.querySelector(".mSideMenu"); if (menu !== null) { @@ -45,10 +62,10 @@ if (typeof Frost !== "undefined" && Frost !== null) { Frost.emit(0); } - setTimeout(function () { + setTimeout((function() { y.disconnect(); console.log("Unhook styler"); - }, 500); + }), 500); } }); @@ -63,11 +80,6 @@ subtree: true }); - menuA = document.querySelector("#bookmarks_jewel").querySelector("a"); - - if (!menuA) { - console.log("Menu.js: jewel is null"); - } - menuA.click(); -}).call(undefined); \ No newline at end of file + +}).call(this); -- cgit v1.2.3 From 330bf2857396b15752afadb030c981a1cb2848fe Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 5 Feb 2019 22:13:41 -0500 Subject: Enhancement/js (#1344) * Attempt to add package json * Add initial typescript components * Convert remaining files * Remove some null checks * Reorganize folders * Add missing js and tests for file paths * Delete unused babelrc * Remove unused packages --- app/build.gradle | 1 + app/src/main/assets/.babelrc | 9 - app/src/main/assets/.gitignore | 4 - app/src/main/assets/adblock.txt | 2347 ------------------- app/src/main/assets/css/components/round_icons.css | 4 - .../main/assets/css/components/round_icons.scss | 4 - app/src/main/assets/css/core/_base.scss | 107 - app/src/main/assets/css/core/_colors.scss | 18 - app/src/main/assets/css/core/_core_bg.scss | 86 - app/src/main/assets/css/core/_core_border.scss | 94 - app/src/main/assets/css/core/_core_messenger.scss | 20 - app/src/main/assets/css/core/_core_text.scss | 39 - app/src/main/assets/css/core/_main.scss | 6 - app/src/main/assets/css/core/_svg.scss | 74 - app/src/main/assets/css/core/core.css | 306 --- app/src/main/assets/css/core/core.scss | 54 - app/src/main/assets/css/themes/.gitignore | 2 - app/src/main/assets/css/themes/custom.css | 338 --- app/src/main/assets/css/themes/custom.scss | 14 - app/src/main/assets/css/themes/material_amoled.css | 338 --- .../main/assets/css/themes/material_amoled.scss | 11 - app/src/main/assets/css/themes/material_dark.css | 338 --- app/src/main/assets/css/themes/material_dark.scss | 10 - app/src/main/assets/css/themes/material_glass.css | 338 --- app/src/main/assets/css/themes/material_glass.scss | 10 - app/src/main/assets/css/themes/material_light.css | 338 --- app/src/main/assets/css/themes/material_light.scss | 15 - app/src/main/assets/js/click_a.coffee | 48 - app/src/main/assets/js/click_a.js | 60 - app/src/main/assets/js/click_debugger.coffee | 14 - app/src/main/assets/js/click_debugger.js | 20 - app/src/main/assets/js/context_a.coffee | 59 - app/src/main/assets/js/context_a.js | 83 - app/src/main/assets/js/document_watcher.coffee | 24 - app/src/main/assets/js/document_watcher.js | 38 - app/src/main/assets/js/header_badges.coffee | 4 - app/src/main/assets/js/header_badges.js | 14 - app/src/main/assets/js/header_hider.coffee | 11 - app/src/main/assets/js/header_hider.js | 19 - app/src/main/assets/js/media.coffee | 29 - app/src/main/assets/js/media.js | 38 - app/src/main/assets/js/menu.coffee | 52 - app/src/main/assets/js/menu.js | 85 - app/src/main/assets/js/menu_debug.coffee | 42 - app/src/main/assets/js/menu_debug.js | 73 - app/src/main/assets/js/notif_msg.coffee | 22 - app/src/main/assets/js/notif_msg.js | 37 - app/src/main/assets/js/textarea_listener.coffee | 22 - app/src/main/assets/js/textarea_listener.js | 35 - app/src/main/assets/pgl.yoyo.org.txt | 2409 -------------------- .../com/pitchedapps/frost/injectors/CssAssets.kt | 4 +- .../com/pitchedapps/frost/injectors/JsAssets.kt | 6 +- .../pitchedapps/frost/injectors/CssAssetsTest.kt | 16 + .../pitchedapps/frost/injectors/JsAssetsTest.kt | 16 + app/src/web/.gitignore | 25 + app/src/web/.idea/compiler.xml | 6 + app/src/web/.idea/encodings.xml | 4 + app/src/web/.idea/misc.xml | 6 + app/src/web/.idea/modules.xml | 8 + app/src/web/.idea/vcs.xml | 6 + app/src/web/.idea/watcherTasks.xml | 25 + app/src/web/README.md | 4 + app/src/web/assets/adblock.txt | 2347 +++++++++++++++++++ app/src/web/assets/css/components/round_icons.css | 4 + app/src/web/assets/css/components/round_icons.scss | 4 + app/src/web/assets/css/core/_base.scss | 107 + app/src/web/assets/css/core/_colors.scss | 18 + app/src/web/assets/css/core/_core_bg.scss | 86 + app/src/web/assets/css/core/_core_border.scss | 94 + app/src/web/assets/css/core/_core_messenger.scss | 20 + app/src/web/assets/css/core/_core_text.scss | 39 + app/src/web/assets/css/core/_main.scss | 6 + app/src/web/assets/css/core/_svg.scss | 74 + app/src/web/assets/css/core/core.css | 306 +++ app/src/web/assets/css/core/core.scss | 54 + app/src/web/assets/css/themes/.gitignore | 2 + app/src/web/assets/css/themes/custom.css | 338 +++ app/src/web/assets/css/themes/custom.scss | 14 + app/src/web/assets/css/themes/material_amoled.css | 338 +++ app/src/web/assets/css/themes/material_amoled.scss | 11 + app/src/web/assets/css/themes/material_dark.css | 338 +++ app/src/web/assets/css/themes/material_dark.scss | 10 + app/src/web/assets/css/themes/material_glass.css | 338 +++ app/src/web/assets/css/themes/material_glass.scss | 10 + app/src/web/assets/css/themes/material_light.css | 338 +++ app/src/web/assets/css/themes/material_light.scss | 15 + app/src/web/assets/js/click_a.js | 55 + app/src/web/assets/js/click_a.ts | 57 + app/src/web/assets/js/click_debugger.js | 14 + app/src/web/assets/js/click_debugger.ts | 15 + app/src/web/assets/js/context_a.js | 68 + app/src/web/assets/js/context_a.ts | 69 + app/src/web/assets/js/document_watcher.js | 24 + app/src/web/assets/js/document_watcher.ts | 27 + app/src/web/assets/js/header_badges.js | 8 + app/src/web/assets/js/header_badges.ts | 7 + app/src/web/assets/js/header_hider.js | 12 + app/src/web/assets/js/header_hider.ts | 17 + app/src/web/assets/js/media.js | 43 + app/src/web/assets/js/media.ts | 47 + app/src/web/assets/js/menu.js | 57 + app/src/web/assets/js/menu.ts | 59 + app/src/web/assets/js/notif_msg.js | 26 + app/src/web/assets/js/notif_msg.ts | 25 + app/src/web/assets/js/textarea_listener.js | 31 + app/src/web/assets/js/textarea_listener.ts | 31 + app/src/web/assets/pgl.yoyo.org.txt | 2409 ++++++++++++++++++++ app/src/web/assets/typings/frost.d.ts | 27 + app/src/web/package.json | 5 + app/src/web/tsconfig.json | 24 + 110 files changed, 8192 insertions(+), 8165 deletions(-) delete mode 100644 app/src/main/assets/.babelrc delete mode 100644 app/src/main/assets/.gitignore delete mode 100644 app/src/main/assets/adblock.txt delete mode 100644 app/src/main/assets/css/components/round_icons.css delete mode 100644 app/src/main/assets/css/components/round_icons.scss delete mode 100644 app/src/main/assets/css/core/_base.scss delete mode 100644 app/src/main/assets/css/core/_colors.scss delete mode 100644 app/src/main/assets/css/core/_core_bg.scss delete mode 100644 app/src/main/assets/css/core/_core_border.scss delete mode 100644 app/src/main/assets/css/core/_core_messenger.scss delete mode 100644 app/src/main/assets/css/core/_core_text.scss delete mode 100644 app/src/main/assets/css/core/_main.scss delete mode 100644 app/src/main/assets/css/core/_svg.scss delete mode 100644 app/src/main/assets/css/core/core.css delete mode 100644 app/src/main/assets/css/core/core.scss delete mode 100644 app/src/main/assets/css/themes/.gitignore delete mode 100644 app/src/main/assets/css/themes/custom.css delete mode 100644 app/src/main/assets/css/themes/custom.scss delete mode 100644 app/src/main/assets/css/themes/material_amoled.css delete mode 100644 app/src/main/assets/css/themes/material_amoled.scss delete mode 100644 app/src/main/assets/css/themes/material_dark.css delete mode 100644 app/src/main/assets/css/themes/material_dark.scss delete mode 100644 app/src/main/assets/css/themes/material_glass.css delete mode 100644 app/src/main/assets/css/themes/material_glass.scss delete mode 100644 app/src/main/assets/css/themes/material_light.css delete mode 100644 app/src/main/assets/css/themes/material_light.scss delete mode 100644 app/src/main/assets/js/click_a.coffee delete mode 100644 app/src/main/assets/js/click_a.js delete mode 100644 app/src/main/assets/js/click_debugger.coffee delete mode 100644 app/src/main/assets/js/click_debugger.js delete mode 100644 app/src/main/assets/js/context_a.coffee delete mode 100644 app/src/main/assets/js/context_a.js delete mode 100644 app/src/main/assets/js/document_watcher.coffee delete mode 100644 app/src/main/assets/js/document_watcher.js delete mode 100644 app/src/main/assets/js/header_badges.coffee delete mode 100644 app/src/main/assets/js/header_badges.js delete mode 100644 app/src/main/assets/js/header_hider.coffee delete mode 100644 app/src/main/assets/js/header_hider.js delete mode 100644 app/src/main/assets/js/media.coffee delete mode 100644 app/src/main/assets/js/media.js delete mode 100644 app/src/main/assets/js/menu.coffee delete mode 100644 app/src/main/assets/js/menu.js delete mode 100644 app/src/main/assets/js/menu_debug.coffee delete mode 100644 app/src/main/assets/js/menu_debug.js delete mode 100644 app/src/main/assets/js/notif_msg.coffee delete mode 100644 app/src/main/assets/js/notif_msg.js delete mode 100644 app/src/main/assets/js/textarea_listener.coffee delete mode 100644 app/src/main/assets/js/textarea_listener.js delete mode 100644 app/src/main/assets/pgl.yoyo.org.txt create mode 100644 app/src/test/kotlin/com/pitchedapps/frost/injectors/CssAssetsTest.kt create mode 100644 app/src/test/kotlin/com/pitchedapps/frost/injectors/JsAssetsTest.kt create mode 100644 app/src/web/.gitignore create mode 100644 app/src/web/.idea/compiler.xml create mode 100644 app/src/web/.idea/encodings.xml create mode 100644 app/src/web/.idea/misc.xml create mode 100644 app/src/web/.idea/modules.xml create mode 100644 app/src/web/.idea/vcs.xml create mode 100644 app/src/web/.idea/watcherTasks.xml create mode 100644 app/src/web/README.md create mode 100644 app/src/web/assets/adblock.txt create mode 100644 app/src/web/assets/css/components/round_icons.css create mode 100644 app/src/web/assets/css/components/round_icons.scss create mode 100644 app/src/web/assets/css/core/_base.scss create mode 100644 app/src/web/assets/css/core/_colors.scss create mode 100644 app/src/web/assets/css/core/_core_bg.scss create mode 100644 app/src/web/assets/css/core/_core_border.scss create mode 100644 app/src/web/assets/css/core/_core_messenger.scss create mode 100644 app/src/web/assets/css/core/_core_text.scss create mode 100644 app/src/web/assets/css/core/_main.scss create mode 100644 app/src/web/assets/css/core/_svg.scss create mode 100644 app/src/web/assets/css/core/core.css create mode 100644 app/src/web/assets/css/core/core.scss create mode 100644 app/src/web/assets/css/themes/.gitignore create mode 100644 app/src/web/assets/css/themes/custom.css create mode 100644 app/src/web/assets/css/themes/custom.scss create mode 100644 app/src/web/assets/css/themes/material_amoled.css create mode 100644 app/src/web/assets/css/themes/material_amoled.scss create mode 100644 app/src/web/assets/css/themes/material_dark.css create mode 100644 app/src/web/assets/css/themes/material_dark.scss create mode 100644 app/src/web/assets/css/themes/material_glass.css create mode 100644 app/src/web/assets/css/themes/material_glass.scss create mode 100644 app/src/web/assets/css/themes/material_light.css create mode 100644 app/src/web/assets/css/themes/material_light.scss create mode 100644 app/src/web/assets/js/click_a.js create mode 100644 app/src/web/assets/js/click_a.ts create mode 100644 app/src/web/assets/js/click_debugger.js create mode 100644 app/src/web/assets/js/click_debugger.ts create mode 100644 app/src/web/assets/js/context_a.js create mode 100644 app/src/web/assets/js/context_a.ts create mode 100644 app/src/web/assets/js/document_watcher.js create mode 100644 app/src/web/assets/js/document_watcher.ts create mode 100644 app/src/web/assets/js/header_badges.js create mode 100644 app/src/web/assets/js/header_badges.ts create mode 100644 app/src/web/assets/js/header_hider.js create mode 100644 app/src/web/assets/js/header_hider.ts create mode 100644 app/src/web/assets/js/media.js create mode 100644 app/src/web/assets/js/media.ts create mode 100644 app/src/web/assets/js/menu.js create mode 100644 app/src/web/assets/js/menu.ts create mode 100644 app/src/web/assets/js/notif_msg.js create mode 100644 app/src/web/assets/js/notif_msg.ts create mode 100644 app/src/web/assets/js/textarea_listener.js create mode 100644 app/src/web/assets/js/textarea_listener.ts create mode 100644 app/src/web/assets/pgl.yoyo.org.txt create mode 100644 app/src/web/assets/typings/frost.d.ts create mode 100644 app/src/web/package.json create mode 100644 app/src/web/tsconfig.json (limited to 'app') diff --git a/app/build.gradle b/app/build.gradle index 5fc249bf..4025568a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -129,6 +129,7 @@ android { main.java.srcDirs += 'src/main/kotlin' test.java.srcDirs += 'src/test/kotlin' androidTest.java.srcDirs += 'src/androidTest/kotlin' + main.assets.srcDirs += ['src/web/assets'] } packagingOptions { diff --git a/app/src/main/assets/.babelrc b/app/src/main/assets/.babelrc deleted file mode 100644 index 7302f727..00000000 --- a/app/src/main/assets/.babelrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "presets": [ - ["env",{ - "targets": { - "browsers": ["android >= 36", "chrome >= 51"] - } - }] - ] -} \ No newline at end of file diff --git a/app/src/main/assets/.gitignore b/app/src/main/assets/.gitignore deleted file mode 100644 index f195f4ab..00000000 --- a/app/src/main/assets/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.idea/ -node_modules/ -.sass-cache/ -package-lock.json \ No newline at end of file diff --git a/app/src/main/assets/adblock.txt b/app/src/main/assets/adblock.txt deleted file mode 100644 index a35d95c8..00000000 --- a/app/src/main/assets/adblock.txt +++ /dev/null @@ -1,2347 +0,0 @@ -# Ad server list for use with hosts files to block ads -# -# For more information about this list, see: https://pgl.yoyo.org/adservers/ -# ---- -# last updated: Wed, 12 Jul 2017 13:54:58 GMT -# entries: 2331 -# format: hosts (hosts -- in hosts file format) -# credits: Peter Lowe - pgl@yoyo.org - https://pgl.yoyo.org/ - https://twitter.com/pgl -# this URL: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext&useip=0.0.0.0 -# other formats: https://pgl.yoyo.org/adservers/formats.php -# policy: https://pgl.yoyo.org/adservers/policy.php -# -# start date: Wed, 12 Jul 2017 00:00:00 -101com.com -101order.com -123found.com -180hits.de -180searchassistant.com -207.net -247media.com -24log.com -24log.de -24pm-affiliation.com -2mdn.net -2o7.net -360yield.com -4affiliate.net -4d5.net -50websads.com -518ad.com -51yes.com -600z.com -777partner.com -77tracking.com -7bpeople.com -7search.com -99count.com -a-ads.com -a-counter.kiev.ua -a.0day.kiev.ua -a.aproductmsg.com -a.collective-media.net -a.consumer.net -a.mktw.net -a.sakh.com -a.ucoz.net -a.ucoz.ru -a.xanga.com -a32.g.a.yimg.com -aaddzz.com -abacho.net -abc-ads.com -absoluteclickscom.com -abz.com -ac.rnm.ca -accounts.pkr.com.invalid -acsseo.com -actionsplash.com -actualdeals.com -acuityads.com -ad-balancer.at -ad-balancer.net -ad-center.com -ad-pay.de -ad-rotator.com -ad-server.gulasidorna.se -ad-serverparc.nl -ad-souk.com -ad-space.net -ad-tech.com -ad-up.com -ad.100.tbn.ru -ad.71i.de -ad.a8.net -ad.abcnews.com -ad.abctv.com -ad.aboutwebservices.com -ad.abum.com -ad.afy11.net -ad.allstar.cz -ad.altervista.org -ad.amgdgt.com -ad.anuntis.com -ad.auditude.com -ad.bizo.com -ad.bnmla.com -ad.bondage.com -ad.caradisiac.com -ad.centrum.cz -ad.cgi.cz -ad.choiceradio.com -ad.clix.pt -ad.cooks.com -ad.crwdcntrl.net -ad.digitallook.com -ad.directrev.com -ad.doctissimo.fr -ad.domainfactory.de -ad.e-kolay.net -ad.eurosport.com -ad.f1cd.ru -ad.flurry.com -ad.foxnetworks.com -ad.freecity.de -ad.gate24.ch -ad.globe7.com -ad.grafika.cz -ad.hbv.de -ad.hodomobile.com -ad.httpool.com -ad.hyena.cz -ad.iinfo.cz -ad.ilove.ch -ad.infoseek.com -ad.jamba.net -ad.jamster.co.uk -ad.jetsoftware.com -ad.keenspace.com -ad.leadbolt.net -ad.liveinternet.ru -ad.lupa.cz -ad.media-servers.net -ad.mediastorm.hu -ad.mgd.de -ad.musicmatch.com -ad.nachtagenten.de -ad.nozonedata.com -ad.nttnavi.co.jp -ad.nwt.cz -ad.onad.eu -ad.pandora.tv -ad.preferances.com -ad.profiwin.de -ad.prv.pl -ad.rambler.ru -ad.reunion.com -ad.scanmedios.com -ad.sensismediasmart.com.au -ad.seznam.cz -ad.simgames.net -ad.slutload.com -ad.smartclip.net -ad.tbn.ru -ad.technoratimedia.com -ad.thewheelof.com -ad.turn.com -ad.tv2.no -ad.twitchguru.com -ad.usatoday.com -ad.virtual-nights.com -ad.wavu.hu -ad.way.cz -ad.weatherbug.com -ad.wsod.com -ad.wz.cz -ad.yadro.ru -ad.yourmedia.com -ad.zanox.com -ad0.bigmir.net -ad01.mediacorpsingapore.com -ad1.emediate.dk -ad1.emule-project.org -ad1.kde.cz -ad1.pamedia.com.au -ad2.iinfo.cz -ad2.linxcz.cz -ad2.lupa.cz -ad2flash.com -ad2games.com -ad3.iinfo.cz -ad3.pamedia.com.au -ad4game.com -adaction.de -adadvisor.net -adap.tv -adapt.tv -adbanner.ro -adbard.net -adbers.com -adblade.com -adblockanalytics.com -adboost.de.vu -adboost.net -adbooth.net -adbot.com -adbrite.com -adbroker.de -adbunker.com -adbutler.com -adbutler.de -adbuyer.com -adbuyer3.lycos.com -adcash.com -adcast.deviantart.com -adcell.de -adcenter.mdf.se -adcenter.net -adcentriconline.com -adcept.net -adclick.com -adclient.uimserv.net -adclient1.tucows.com -adcomplete.com -adconion.com -adcontent.gamespy.com -adcycle.com -add.newmedia.cz -addealing.com -addfreestats.com -addme.com -adecn.com -ademails.com -adengage.com -adexchangeprediction.com -adexpose.com -adext.inkclub.com -adf.ly -adfactor.nl -adfarm.mediaplex.com -adflight.com -adforce.com -adform.com -adgardener.com -adgoto.com -adgridwork.com -adhese.be -adhese.com -adimage.asiaone.com.sg -adimage.guardian.co.uk -adimages.been.com -adimages.carsoup.com -adimages.go.com -adimages.homestore.com -adimages.omroepzeeland.nl -adimages.sanomawsoy.fi -adimg.cnet.com -adimg.com.com -adimg.uimserv.net -adimg1.chosun.com -adimgs.sapo.pt -adimpact.com -adinjector.net -adinterax.com -adisfy.com -adition.com -adition.de -adition.net -adizio.com -adjix.com -adjug.com -adjuggler.com -adjuggler.yourdictionary.com -adjustnetwork.com -adk2.com -adk2ads.tictacti.com -adland.ru -adlantic.nl -adledge.com -adlegend.com -adlog.com.com -adloox.com -adlooxtracking.com -adlure.net -admagnet.net -admailtiser.com -adman.gr -adman.in.gr -adman.otenet.gr -admanagement.ch -admanager.btopenworld.com -admanager.carsoup.com -admarketplace.net -admarvel.com -admax.nexage.com -admedia.com -admedia.ro -admeld.com -admerize.be -admeta.com -admex.com -adminder.com -adminshop.com -admized.com -admob.com -admonitor.com -admotion.com.ar -adnet-media.net -adnet.asahi.com -adnet.biz -adnet.de -adnet.ru -adnet.worldreviewer.com -adnetinteractive.com -adnetwork.net -adnetworkperformance.com -adnews.maddog2000.de -adnotch.com -adnxs.com -adocean.pl -adonspot.com -adoperator.com -adorigin.com -adpepper.dk -adpepper.nl -adperium.com -adpia.vn -adplus.co.id -adplxmd.com -adprofile.net -adprojekt.pl -adq.nextag.com -adrazzi.com -adreactor.com -adrecreate.com -adremedy.com -adreporting.com -adres.internet.com -adrevolver.com -adriver.ru -adrolays.de -adrotate.de -adrotator.se -adrta.com -ads-click.com -ads.4tube.com -ads.5ci.lt -ads.abovetopsecret.com -ads.aceweb.net -ads.activestate.com -ads.adfox.ru -ads.administrator.de -ads.adshareware.net -ads.adultfriendfinder.com -ads.adultswim.com -ads.advance.net -ads.adverline.com -ads.affiliates.match.com -ads.ak.facebook.com.edgesuite.net -ads.allvatar.com -ads.alt.com -ads.amdmb.com -ads.amigos.com -ads.aol.co.uk -ads.aol.com -ads.apn.co.nz -ads.appsgeyser.com -ads.as4x.tmcs.net -ads.as4x.tmcs.ticketmaster.com -ads.asia1.com.sg -ads.asiafriendfinder.com -ads.ask.com -ads.aspalliance.com -ads.avazu.net -ads.batpmturner.com -ads.beenetworks.net -ads.belointeractive.com -ads.berlinonline.de -ads.betanews.com -ads.betfair.com -ads.betfair.com.au -ads.bigchurch.com -ads.bigfoot.com -ads.bing.com -ads.bittorrent.com -ads.blog.com -ads.bloomberg.com -ads.bluelithium.com -ads.bluemountain.com -ads.bluesq.com -ads.bonniercorp.com -ads.boylesports.com -ads.brabys.com -ads.brazzers.com -ads.bumq.com -ads.businessweek.com -ads.canalblog.com -ads.canoe.ca -ads.casinocity.com -ads.cbc.ca -ads.cc -ads.cc-dt.com -ads.centraliprom.com -ads.cgnetworks.com -ads.channel4.com -ads.clearchannel.com -ads.co.com -ads.com.com -ads.contactmusic.com -ads.contentabc.com -ads.contextweb.com -ads.crakmedia.com -ads.creative-serving.com -ads.creativematch.com -ads.cricbuzz.com -ads.cybersales.cz -ads.dada.it -ads.datinggold.com -ads.datingyes.com -ads.dazoot.ro -ads.deltha.hu -ads.dennisnet.co.uk -ads.desmoinesregister.com -ads.detelefoongids.nl -ads.deviantart.com -ads.digital-digest.com -ads.digitalmedianet.com -ads.digitalpoint.com -ads.directionsmag.com -ads.domain.com -ads.domeus.com -ads.eagletribune.com -ads.easy-forex.com -ads.eatinparis.com -ads.economist.com -ads.edbindex.dk -ads.egrana.com.br -ads.einmedia.com -ads.electrocelt.com -ads.elitetrader.com -ads.emirates.net.ae -ads.epltalk.com -ads.eu.msn.com -ads.exactdrive.com -ads.expat-blog.biz -ads.expedia.com -ads.ezboard.com -ads.factorymedia.com -ads.fairfax.com.au -ads.faxo.com -ads.ferianc.com -ads.filmup.com -ads.financialcontent.com -ads.flooble.com -ads.fool.com -ads.footymad.net -ads.forbes.com -ads.forbes.net -ads.forium.de -ads.fortunecity.com -ads.fotosidan.se -ads.foxkidseurope.net -ads.foxnetworks.com -ads.foxnews.com -ads.freecity.de -ads.friendfinder.com -ads.ft.com -ads.futurenet.com -ads.gamecity.net -ads.gamershell.com -ads.gamespyid.com -ads.gamigo.de -ads.gaming-universe.de -ads.gawker.com -ads.geekswithblogs.net -ads.glispa.com -ads.gmodules.com -ads.godlikeproductions.com -ads.goyk.com -ads.gplusmedia.com -ads.gradfinder.com -ads.grindinggears.com -ads.groundspeak.com -ads.gsm-exchange.com -ads.gsmexchange.com -ads.guardian.co.uk -ads.guardianunlimited.co.uk -ads.guru3d.com -ads.hardwaresecrets.com -ads.harpers.org -ads.hbv.de -ads.hearstmags.com -ads.heartlight.org -ads.heias.com -ads.hideyourarms.com -ads.hollywood.com -ads.horsehero.com -ads.horyzon-media.com -ads.iafrica.com -ads.ibest.com.br -ads.ibryte.com -ads.icq.com -ads.ign.com -ads.img.co.za -ads.imgur.com -ads.indiatimes.com -ads.infi.net -ads.internic.co.il -ads.ipowerweb.com -ads.isoftmarketing.com -ads.itv.com -ads.iwon.com -ads.jewishfriendfinder.com -ads.jiwire.com -ads.jobsite.co.uk -ads.jpost.com -ads.jubii.dk -ads.justhungry.com -ads.kaktuz.net -ads.kelbymediagroup.com -ads.kinobox.cz -ads.kinxxx.com -ads.kompass.com -ads.krawall.de -ads.lesbianpersonals.com -ads.linuxfoundation.org -ads.linuxjournal.com -ads.linuxsecurity.com -ads.livenation.com -ads.mariuana.it -ads.massinfra.nl -ads.mcafee.com -ads.mediaodyssey.com -ads.medienhaus.de -ads.mgnetwork.com -ads.mmania.com -ads.moceanads.com -ads.motor-forum.nl -ads.motormedia.nl -ads.msn.com -ads.multimania.lycos.fr -ads.nationalgeographic.com -ads.ncm.com -ads.netmechanic.com -ads.networksolutions.com -ads.newdream.net -ads.newgrounds.com -ads.newmedia.cz -ads.newsint.co.uk -ads.newsquest.co.uk -ads.ninemsn.com.au -ads.nj.com -ads.nola.com -ads.nordichardware.com -ads.nordichardware.se -ads.nwsource.com -ads.nyi.net -ads.nytimes.com -ads.nyx.cz -ads.nzcity.co.nz -ads.o2.pl -ads.oddschecker.com -ads.okcimg.com -ads.ole.com -ads.olivebrandresponse.com -ads.oneplace.com -ads.ookla.com -ads.optusnet.com.au -ads.outpersonals.com -ads.passion.com -ads.pennet.com -ads.penny-arcade.com -ads.pheedo.com -ads.phpclasses.org -ads.pickmeup-ltd.com -ads.planet.nl -ads.pni.com -ads.pof.com -ads.powweb.com -ads.primissima.it -ads.printscr.com -ads.prisacom.com -ads.program3.com -ads.psd2html.com -ads.pushplay.com -ads.quoka.de -ads.rcs.it -ads.recoletos.es -ads.rediff.com -ads.redlightcenter.com -ads.redtube.com -ads.resoom.de -ads.returnpath.net -ads.s3.sitepoint.com -ads.satyamonline.com -ads.savannahnow.com -ads.saymedia.com -ads.scifi.com -ads.seniorfriendfinder.com -ads.servebom.com -ads.sexinyourcity.com -ads.shizmoo.com -ads.shopstyle.com -ads.sift.co.uk -ads.silverdisc.co.uk -ads.slim.com -ads.smartclick.com -ads.soft32.com -ads.space.com -ads.sptimes.com -ads.stackoverflow.com -ads.sun.com -ads.supplyframe.com -ads.t-online.de -ads.tahono.com -ads.techtv.com -ads.telegraph.co.uk -ads.themovienation.com -ads.thestar.com -ads.tmcs.net -ads.totallyfreestuff.com -ads.townhall.com -ads.trinitymirror.co.uk -ads.tripod.com -ads.tripod.lycos.co.uk -ads.tripod.lycos.de -ads.tripod.lycos.es -ads.tripod.lycos.it -ads.tripod.lycos.nl -ads.tripod.spray.se -ads.tso.dennisnet.co.uk -ads.uknetguide.co.uk -ads.ultimate-guitar.com -ads.uncrate.com -ads.undertone.com -ads.usatoday.com -ads.v3.com -ads.verticalresponse.com -ads.vgchartz.com -ads.videosz.com -ads.virtual-nights.com -ads.virtualcountries.com -ads.vnumedia.com -ads.waps.cn -ads.wapx.cn -ads.weather.ca -ads.web.aol.com -ads.web.cs.com -ads.web.de -ads.webmasterpoint.org -ads.websiteservices.com -ads.whi.co.nz -ads.whoishostingthis.com -ads.wiezoekje.nl -ads.wikia.nocookie.net -ads.wineenthusiast.com -ads.wwe.biz -ads.xhamster.com -ads.xtra.co.nz -ads.y-0.net -ads.yahoo.com -ads.yimg.com -ads.yldmgrimg.net -ads.yourfreedvds.com -ads.youtube.com -ads.zdnet.com -ads.ztod.com -ads03.redtube.com -ads1.canoe.ca -ads1.mediacapital.pt -ads1.msn.com -ads1.rne.com -ads1.virtual-nights.com -ads10.speedbit.com -ads180.com -ads2.brazzers.com -ads2.clearchannel.com -ads2.contentabc.com -ads2.gamecity.net -ads2.jubii.dk -ads2.net-communities.co.uk -ads2.oneplace.com -ads2.rne.com -ads2.virtual-nights.com -ads2.xnet.cz -ads2004.treiberupdate.de -ads3.contentabc.com -ads3.gamecity.net -ads3.virtual-nights.com -ads4.clearchannel.com -ads4.gamecity.net -ads4.virtual-nights.com -ads4homes.com -ads5.canoe.ca -ads5.virtual-nights.com -ads6.gamecity.net -ads7.gamecity.net -ads8.com -adsatt.abc.starwave.com -Adsatt.ABCNews.starwave.com -adsatt.espn.go.com -adsatt.espn.starwave.com -Adsatt.go.starwave.com -adsby.bidtheatre.com -adscale.de -adscholar.com -adscience.nl -adscpm.com -adsdaq.com -adsdk.com -adsend.de -adserv.evo-x.de -adserv.gamezone.de -adserv.iafrica.com -adserv.qconline.com -adserve.ams.rhythmxchange.com -adserver-live.yoc.mobi -adserver.43plc.com -adserver.71i.de -adserver.adultfriendfinder.com -adserver.aidameter.com -adserver.aol.fr -adserver.beggarspromo.com -adserver.betandwin.de -adserver.bing.com -adserver.bizhat.com -adserver.break-even.it -adserver.cams.com -adserver.com -adserver.digitoday.com -adserver.dotcommedia.de -adserver.finditquick.com -adserver.flossiemediagroup.com -adserver.freecity.de -adserver.freenet.de -adserver.friendfinder.com -adserver.hardsextube.com -adserver.hardwareanalysis.com -adserver.html.it -adserver.irishwebmasterforum.com -adserver.janes.com -adserver.libero.it -adserver.news.com.au -adserver.ngz-network.de -adserver.nydailynews.com -adserver.o2.pl -adserver.oddschecker.com -adserver.omroepzeeland.nl -adserver.pl -adserver.portalofevil.com -adserver.portugalmail.net -adserver.portugalmail.pt -adserver.sanomawsoy.fi -adserver.sciflicks.com -adserver.sharewareonline.com -adserver.spankaway.com -adserver.startnow.com -adserver.theonering.net -adserver.twitpic.com -adserver.viagogo.com -adserver.virginmedia.com -adserver.yahoo.com -adserver01.de -adserver1-images.backbeatmedia.com -adserver1.backbeatmedia.com -adserver1.mindshare.de -adserver1.ogilvy-interactive.de -adserver2.mindshare.de -adserverplus.com -adserversolutions.com -adservinginternational.com -adsfac.eu -adsfac.net -adsfac.us -adshost1.com -adside.com -adsk2.co -adskape.ru -adsklick.de -adsmarket.com -adsmart.co.uk -adsmart.com -adsmart.net -adsmogo.com -adsnative.com -adsoftware.com -adsoldier.com -adsonar.com -adspace.ro -adspeed.net -adspirit.de -adsponse.de -adsremote.scrippsnetworks.com -adsrevenue.net -adsrv.deviantart.com -adsrv.eacdn.com -adsrv.iol.co.za -adsrvr.org -adsstat.com -adstat.4u.pl -adstest.weather.com -adsupply.com -adsymptotic.com -adsynergy.com -adsys.townnews.com -adsystem.simplemachines.org -adtech.de -adtechus.com -adtegrity.net -adthis.com -adtiger.de -adtoll.com -adtology.com -adtoma.com -adtrace.org -adtrade.net -adtrading.de -adtrak.net -adtriplex.com -adultadvertising.com -adv-adserver.com -adv-banner.libero.it -adv.cooperhosting.net -adv.freeonline.it -adv.hwupgrade.it -adv.livedoor.com -adv.webmd.com -adv.wp.pl -adv.yo.cz -advariant.com -adventory.com -advert.bayarea.com -advert.dyna.ultraweb.hu -adverticum.com -adverticum.net -adverticus.de -advertise.com -advertiseireland.com -advertisespace.com -advertising.com -advertising.guildlaunch.net -advertisingbanners.com -advertisingbox.com -advertisingtag.net -advertmarket.com -advertmedia.de -advertpro.sitepoint.com -advertpro.ya.com -adverts.carltononline.com -advertserve.com -advertstream.com -advertwizard.com -advideo.uimserv.net -adview.ppro.de -advisormedia.cz -adviva.net -advnt.com -adwareremovergold.com -adwhirl.com -adwitserver.com -adworldnetwork.com -adworx.at -adworx.be -adworx.nl -adx.allstar.cz -adx.atnext.com -adxpansion.com -adxpose.com -adxvalue.com -adyea.com -adzerk.net -adzerk.s3.amazonaws.com -adzones.com -af-ad.co.uk -affbuzzads.com -affili.net -affiliate.1800flowers.com -affiliate.doubleyourdating.com -affiliate.dtiserv.com -affiliate.gamestop.com -affiliate.mercola.com -affiliate.mogs.com -affiliate.offgamers.com -affiliate.travelnow.com -affiliate.viator.com -affiliatefuel.com -affiliatefuture.com -affiliates.allposters.com -affiliates.babylon.com -affiliates.digitalriver.com -affiliates.globat.com -affiliates.internationaljock.com -affiliates.streamray.com -affiliates.thinkhost.net -affiliates.thrixxx.com -affiliates.ultrahosting.com -affiliatetracking.com -affiliatetracking.net -affiliatewindow.com -affiliation-france.com -afftracking.justanswer.com -ah-ha.com -ahalogy.com -aidu-ads.de -aim4media.com -aistat.net -aktrack.pubmatic.com -alclick.com -alenty.com -alexa-sitestats.s3.amazonaws.com -alipromo.com -all4spy.com -alladvantage.com -allosponsor.com -amazingcounters.com -amazon-adsystem.com -americash.com -amung.us -an.tacoda.net -anahtars.com -analytics.adpost.org -analytics.google.com -analytics.live.com -analytics.yahoo.com -anm.intelli-direct.com -annonser.dagbladet.no -api.intensifier.de -apture.com -arc1.msn.com -arcadebanners.com -ard.xxxblackbook.com -are-ter.com -as.webmd.com -as1.advfn.com -assets1.exgfnetwork.com -assoc-amazon.com -at-adserver.alltop.com -atdmt.com -athena-ads.wikia.com -atwola.com -auctionads.com -auctionads.net -audience2media.com -audit.median.hu -audit.webinform.hu -auto-bannertausch.de -autohits.dk -avenuea.com -avpa.javalobby.org -avres.net -avsads.com -awempire.com -awin1.com -azfront.com -b-1st.com -b.aol.com -b.engadget.com -ba.afl.rakuten.co.jp -babs.tv2.dk -backbeatmedia.com -banik.redigy.cz -banner-exchange-24.de -banner.ad.nu -banner.ambercoastcasino.com -banner.blogranking.net -banner.buempliz-online.ch -banner.casino.net -banner.casinodelrio.com -banner.cotedazurpalace.com -banner.coza.com -banner.cz -banner.easyspace.com -banner.elisa.net -banner.eurogrand.com -banner.featuredusers.com -banner.getgo.de -banner.goldenpalace.com -banner.img.co.za -banner.inyourpocket.com -banner.kiev.ua -banner.linux.se -banner.media-system.de -banner.mindshare.de -banner.nixnet.cz -banner.noblepoker.com -banner.northsky.com -banner.orb.net -banner.penguin.cz -banner.rbc.ru -banner.relcom.ru -banner.tanto.de -banner.titan-dsl.de -banner.vadian.net -banner.webmersion.com -banner.wirenode.com -bannerads.de -bannerboxes.com -bannercommunity.de -bannerconnect.com -bannerconnect.net -bannerexchange.cjb.net -bannerflow.com -bannergrabber.internet.gr -bannerhost.com -bannerimage.com -bannerlandia.com.ar -bannermall.com -bannermarkt.nl -bannerpower.com -banners.adultfriendfinder.com -banners.amigos.com -banners.asiafriendfinder.com -banners.audioholics.com -banners.babylon-x.com -banners.bol.com.br -banners.cams.com -banners.clubseventeen.com -banners.czi.cz -banners.dine.com -banners.direction-x.com -banners.directnic.com -banners.easydns.com -banners.freett.com -banners.friendfinder.com -banners.getiton.com -banners.iq.pl -banners.isoftmarketing.com -banners.lifeserv.com -banners.linkbuddies.com -banners.passion.com -banners.resultonline.com -banners.sexsearch.com -banners.sys-con.com -banners.thomsonlocal.com -banners.videosz.com -banners.virtuagirlhd.com -banners.wunderground.com -bannerserver.com -bannersgomlm.com -bannershotlink.perfectgonzo.com -bannersng.yell.com -bannerspace.com -bannerswap.com -bannertesting.com -bannery.cz -bannieres.acces-contenu.com -bans.adserver.co.il -bans.bride.ru -barnesandnoble.bfast.com -basebanner.com -baypops.com -bbelements.com -bbn.img.com.ua -begun.ru -belstat.com -belstat.nl -berp.com -best-pr.info -best-top.ro -bestsearch.net -bhclicks.com -bidclix.com -bidclix.net -bidswitch.net -bidtrk.com -bidvertiser.com -bigbangmedia.com -bigclicks.com -billboard.cz -bitads.net -bitmedianetwork.com -bizad.nikkeibp.co.jp -bizrate.com -blast4traffic.com -blingbucks.com -blogads.com -blogcounter.de -blogherads.com -blogrush.com -blogtoplist.se -blogtopsites.com -blueadvertise.com -bluekai.com -bluelithium.com -bluewhaleweb.com -bm.annonce.cz -bn.bfast.com -boersego-ads.de -boldchat.com -boom.ro -boomads.com -boost-my-pr.de -box.anchorfree.net -bpath.com -braincash.com -brandreachsys.com -bravenet.com.invalid -bridgetrack.com -brightinfo.com -british-banners.com -bs.yandex.ru -bttrack.com -budsinc.com -bullseye.backbeatmedia.com -buyhitscheap.com -buysellads.com -buzzonclick.com -bvalphaserver.com -bwp.download.com -c.bigmir.net -c1.nowlinux.com -c1exchange.com -campaign.bharatmatrimony.com -caniamedia.com -carbonads.com -carbonads.net -casalemedia.com -casalmedia.com -cash4members.com -cash4popup.de -cashcrate.com -cashengines.com -cashfiesta.com -cashlayer.com -cashpartner.com -casinogames.com -casinopays.com -casinorewards.com -casinotraffic.com -casinotreasure.com -cbanners.virtuagirlhd.com -cbmall.com -cdn.freefacti.com -cdn.freefarcy.com -cecash.com -centerpointmedia.com -ceskydomov.alias.ngs.modry.cz -cetrk.com -cgicounter.puretec.de -ch.questionmarket.com -chameleon.ad -channelintelligence.com -chart.dk -chartbeat.com -chartbeat.net -checkm8.com -checkstat.nl -chestionar.ro -chitika.net -cibleclick.com.invalid -cityads.telus.net -cj.com -cjbmanagement.com -cjlog.com -claria.com -class-act-clicks.com -click.absoluteagency.com -click.fool.com -click.kmindex.ru -click2freemoney.com -click2paid.com -clickability.com -clickadz.com -clickagents.com -clickbank.com -clickbank.net -clickbooth.com -clickboothlnk.com -clickbrokers.com -clickcompare.co.uk -clickdensity.com -clickedyclick.com -clickhereforcellphones.com -clickhouse.com -clickhype.com -clicklink.jp -clickmedia.ro -clickonometrics.pl -clicks.equantum.com -clicks.mods.de -clickserve.cc-dt.com -clicksor.com -clicktag.de -clickthruserver.com -clickthrutraffic.com -clicktrace.info -clicktrack.ziyu.net -clicktracks.com -clicktrade.com -clickxchange.com -clickz.com -clickzxc.com -clicmanager.fr -clientmetrics-pa.googleapis.com -clients.tbo.com -clixgalore.com -clk.konflab.com -clkads.com -clkrev.com -cluster.adultworld.com -clustrmaps.com -cmpstar.com -cnomy.com -cnt.spbland.ru -cnt1.pocitadlo.cz -code-server.biz -colonize.com -comclick.com -commindo-media-ressourcen.de -commissionmonster.com -compactbanner.com -comprabanner.it -confirmed-profits.com -connextra.com -contaxe.de -content.acc-hd.de -content.ad -contextweb.com -conversantmedia.com -conversionruler.com -cookies.cmpnet.com -coremetrics.com -count.rbc.ru -count.rin.ru -count.west263.com -counted.com -counter.bloke.com -counter.cnw.cz -counter.cz -counter.dreamhost.com -counter.fateback.com -counter.mirohost.net -counter.mojgorod.ru -counter.nowlinux.com -counter.rambler.ru -counter.search.bg -counter.sparklit.com -counter.yadro.ru -counters.honesty.com -counting.kmindex.ru -counts.tucows.com -coupling-media.de -cpalead.com -cpays.com -cpmaffiliation.com -cpmstar.com -cpxinteractive.com -cqcounter.com -crakmedia.com -craktraffic.com -crawlability.com -crazypopups.com -creafi-online-media.com -creative.whi.co.nz -creatives.as4x.tmcs.net -creatives.livejasmin.com -crispads.com -criteo.com -crowdgravity.com -crtv.mate1.com -crwdcntrl.net -ctnetwork.hu -cubics.com -customad.cnn.com -cyberbounty.com -cybermonitor.com -d.adroll.com -dakic-ia-300.com -danban.com -dapper.net -datashreddergold.com -dbbsrv.com -dc-storm.com -de17a.com -dealdotcom.com -debtbusterloans.com -decknetwork.net -deloo.de -demandbase.com -demdex.net -di1.shopping.com -dialerporn.com -didtheyreadit.com -direct-xxx-access.com -directaclick.com -directivepub.com -directleads.com -directorym.com -directtrack.com -discountclick.com -displayadsmedia.com -dist.belnk.com -dmtracker.com -dmtracking.alibaba.com -dmtracking2.alibaba.com -dnads.directnic.com -domaining.in -domainsponsor.com -domainsteam.de -domdex.com -doubleclick.com -doubleclick.de -doubleclick.net -doublepimp.com -drumcash.com -dynamic.fmpub.net -e-adimages.scrippsnetworks.com -e-bannerx.com -e-debtconsolidation.com -e-m.fr -e-n-t-e-r-n-e-x.com -e-planning.net -e.kde.cz -eadexchange.com -eas.almamedia.fi -easyhits4u.com -ebayadvertising.com -ebocornac.com -ebuzzing.com -ecircle-ag.com -eclick.vn -ecoupons.com -edgeio.com -effectivemeasure.com -effectivemeasure.net -eiv.baidu.com -elitedollars.com -elitetoplist.com -emarketer.com -emediate.dk -emediate.eu -engine.espace.netavenir.com -enginenetwork.com -enoratraffic.com -enquisite.com -entercasino.com -entrecard.s3.amazonaws.com -eqads.com -ero-advertising.com -esellerate.net -estat.com -etahub.com -etargetnet.com -etracker.de -eu-adcenter.net -eu1.madsone.com -eur.a1.yimg.com -eurekster.com -euroclick.com -euros4click.de -eusta.de -evergage.com -evidencecleanergold.com -ewebcounter.com -exchange-it.com -exchange.bg -exchangead.com -exchangeclicksonline.com -exelator.com -exit76.com -exitexchange.com -exitfuel.com -exoclick.com -exogripper.com -experteerads.com -exponential.com -express-submit.de -extractorandburner.com -extreme-dm.com -extremetracking.com -eyeblaster.com -eyereturn.com -eyeviewads.com -eyewonder.com -ezula.com -f5biz.com -fast-adv.it -fastclick.com -fastclick.com.edgesuite.net -fastclick.net -fb-promotions.com -fc.webmasterpro.de -feedbackresearch.com -feedjit.com -ffxcam.fairfax.com.au -fimc.net -fimserve.com -findcommerce.com -findyourcasino.com -fineclicks.com -first.nova.cz -firstlightera.com -flashtalking.com -fleshlightcash.com -flexbanner.com -flowgo.com -flurry.com -fonecta.leiki.com -foo.cosmocode.de -forex-affiliate.net -fpctraffic.com -fpctraffic2.com -fragmentserv.iac-online.de -free-banners.com -freebanner.com -freelogs.com -freeonlineusers.com -freepay.com -freestats.com -freestats.tv -freewebcounter.com -funklicks.com -funpageexchange.com -fusionads.net -fusionquest.com -fxstyle.net -galaxien.com -game-advertising-online.com -gamehouse.com -gamesites100.net -gamesites200.com -gamesitestop100.com -gator.com -gbanners.hornymatches.com -gemius.pl -geo.digitalpoint.com -geobanner.adultfriendfinder.com -geovisite.com -getclicky.com -globalismedia.com -globaltakeoff.net -globaltrack.com.invalid -globe7.com -globus-inter.com -gmads.net -go-rank.de -goingplatinum.com -goldstats.com -google-analytics.com -googleadservices.com -googleads.g.doubleclick.net -googlesyndication.com -gostats.com -gp.dejanews.com -gpr.hu -grafstat.ro -grapeshot.co.uk -greystripe.com -gtop100.com -gunggo.com -harrenmedia.com -harrenmedianetwork.com -havamedia.net -heias.com -hentaicounter.com -herbalaffiliateprogram.com -hexusads.fluent.ltd.uk -heyos.com -hgads.com -hidden.gogoceleb.com -hightrafficads.com -histats.com -hit-parade.com -hit.bg -hit.ua -hit.webcentre.lycos.co.uk -hitbox.com -hitcents.com -hitfarm.com -hitiz.com -hitlist.ru -hitlounge.com -hitometer.com -hits.europuls.eu -hits.informer.com -hits.puls.lv -hits.theguardian.com -hits4me.com -hits4pay.com -hitslink.com -hittail.com -hollandbusinessadvertising.nl -homepageking.de -hostedads.realitykings.com -hotjar.com -hotkeys.com -hotlog.ru -hotrank.com.tw -hs-analytics.net -htmlhubing.xyz -httpool.com -hurricanedigitalmedia.com -hydramedia.com -hyperbanner.net -hypertracker.com -i-clicks.net -i.xx.openx.com -i1img.com -i1media.no -ia.iinfo.cz -iad.anm.co.uk -iadnet.com -iasds01.com -iconadserver.com -icptrack.com -idcounter.com -identads.com -idregie.com -idtargeting.com -ientrymail.com -iesnare.com -ifa.tube8live.com -ilbanner.com -ilead.itrack.it -ilovecheating.com -imageads.canoe.ca -imagecash.net -images-pw.secureserver.net -images.v3.com -imarketservices.com -img.prohardver.hu -imgpromo.easyrencontre.com -imonitor.nethost.cz -imprese.cz -impressionmedia.cz -impressionz.co.uk -imrworldwide.com -inboxdollars.com -incentaclick.com -indexstats.com -indieclick.com -industrybrains.com -inetlog.ru -infinite-ads.com -infinityads.com -infolinks.com -information.com -inringtone.com -insightexpress.com -insightexpressai.com -instantmadness.com -intelliads.com -intellitxt.com -interactive.forthnet.gr -intergi.com -internetfuel.com -interreklame.de -interstat.hu -ip.ro -ip193.cn -iperceptions.com -ipro.com -ireklama.cz -itfarm.com -itop.cz -its-that-easy.com -itsptp.com -jcount.com -jinkads.de -joetec.net -js.users.51.la -juicyads.com -jumptap.com -justrelevant.com -justwebads.com -k.iinfo.cz -kanoodle.com -keymedia.hu -kindads.com -kissmetrics.com -kliks.nl -kniverto.com -komoona.com -kompasads.com -kontera.com -kt-g.de -ktu.sv2.biz -lakequincy.com -launchbit.com -layer-ad.de -layer-ads.de -lbn.ru -lct.salesforce.com -lead-analytics.nl -leadboltads.net -leadclick.com -leadingedgecash.com -leadzupc.com -levelrate.de -lfstmedia.com -liftdna.com -ligatus.com -ligatus.de -lightningcast.net -lightspeedcash.com -link-booster.de -link4ads.com -linkadd.de -linkbuddies.com -linkexchange.com -linkprice.com -linkrain.com -linkreferral.com -links-ranking.de -linkshighway.com -linkstorms.com -linkswaper.com -linktarget.com -liquidad.narrowcastmedia.com -liveintent.com -liverail.com -loading321.com -log.btopenworld.com -logua.com -lop.com -lucidmedia.com -lzjl.com -m.webtrends.com -m1.webstats4u.com -m4n.nl -mackeeperapp.mackeeper.com -madclient.uimserv.net -madisonavenue.com -mads.cnet.com -madvertise.de -marchex.com -market-buster.com -marketing.888.com -marketing.hearstmagazines.nl -marketing.nyi.net -marketing.osijek031.com -marketingsolutions.yahoo.com -maroonspider.com -mas.sector.sk -mastermind.com -matchcraft.com -mathtag.com -max.i12.de -maximumcash.com -mbn.com.ua -mbs.megaroticlive.com -mbuyu.nl -mdotm.com -measuremap.com -media-adrunner.mycomputer.com -media-servers.net -media.ftv-publicite.fr -media.funpic.de -media6degrees.com -mediaarea.eu -mediacharger.com -mediadvertising.ro -mediageneral.com -mediamath.com -mediamgr.ugo.com -mediaplazza.com -mediaplex.com -mediascale.de -mediatext.com -mediax.angloinfo.com -mediaz.angloinfo.com -medleyads.com -medyanetads.com -megacash.de -megago.com -megastats.com -megawerbung.de -metaffiliation.com -metanetwork.com -methodcash.com -metrics.cnn.com -metrics.windowsitpro.com -mgid.com -miarroba.com -microstatic.pl -microticker.com -midnightclicking.com -misstrends.com -mixpanel.com -mixtraffic.com -mjxads.internet.com -mlm.de -mmismm.com -mmtro.com -moatads.com -mobclix.com -mocean.mobi -moneyexpert.com -monsterpops.com -mopub.com -mouseflow.com -mpstat.us -mr-rank.de -mrskincash.com -mtree.com -musiccounter.ru -muwmedia.com -myaffiliateprogram.com -mybloglog.com -mycounter.ua -mymoneymakingapp.com -mypagerank.net -mypagerank.ru -mypowermall.com -mystat-in.net -mystat.pl -mytop-in.net -n69.com -naiadsystems.com.invalid -naj.sk -namimedia.com -nastydollars.com -navigator.io -navrcholu.cz -nbjmp.com -ndparking.com -nedstat.com -nedstat.nl -nedstatbasic.net -nedstatpro.net -nend.net -neocounter.neoworx-blog-tools.net -neoffic.com -net-filter.com -netaffiliation.com -netagent.cz -netclickstats.com -netcommunities.com -netdirect.nl -netincap.com -netpool.netbookia.net -netshelter.net -neudesicmediagroup.com -newads.bangbros.com -newbie.com -newnet.qsrch.com -newnudecash.com -newopenx.detik.com -newt1.adultadworld.com -newt1.adultworld.com -newtopsites.com -ng3.ads.warnerbros.com -ngs.impress.co.jp -nitroclicks.com -novem.pl -nuggad.net -numax.nu-1.com -nuseek.com -oas.benchmark.fr -oas.foxnews.com -oas.repubblica.it -oas.roanoke.com -oas.salon.com -oas.toronto.com -oas.uniontrib.com -oas.villagevoice.com -oascentral.businessweek.com -oascentral.chicagobusiness.com -oascentral.fortunecity.com -oascentral.register.com -oewa.at -oewabox.at -offerforge.com -offermatica.com -olivebrandresponse.com -omniture.com -onclasrv.com -onclickads.net -oneandonlynetwork.com -onenetworkdirect.com -onestat.com -onestatfree.com -online-metrix.net -onlinecash.com -onlinecashmethod.com -onlinerewardcenter.com -openad.tf1.fr -openad.travelnow.com -openads.friendfinder.com -openads.org -openx.angelsgroup.org.uk -openx.blindferret.com -opienetwork.com -optimost.com -optmd.com -ordingly.com -ota.cartrawler.com -otto-images.developershed.com -outbrain.com -overture.com -owebmoney.ru -oxado.com -oxcash.com -oxen.hillcountrytexas.com -p.adpdx.com -pagead.l.google.com -pagefair.com -pagerank-ranking.de -pagerank-submitter.de -pagerank-united.de -pagerank4you.com -pageranktop.com -pagead2.googlesyndication.com -parse.ly.invalid -parsely.com -partage-facile.com -partner-ads.com -partner.pelikan.cz -partner.topcities.com -partnerad.l.google.com -partnercash.de -partners.priceline.com -passion-4.net -pay-ads.com -paycounter.com -paypopup.com -payserve.com -pbnet.ru -pcash.imlive.com -peep-auktion.de -peer39.com -pennyweb.com -pepperjamnetwork.com -percentmobile.com -perfectaudience.com -perfiliate.com -performancerevenue.com -performancerevenues.com -performancing.com -pgmediaserve.com -pgpartner.com -pheedo.com -phoenix-adrunner.mycomputer.com -phpadsnew.new.natuurpark.nl -phpmyvisites.net -picadmedia.com -pillscash.com -pimproll.com -pixel.adsafeprotected.com -pixel.jumptap.com -pixel.redditmedia.com -play4traffic.com -playhaven.com -plista.com -plugrush.com -pointroll.com -pop-under.ru -popads.net -popub.com -popunder.ru -popup.msn.com -popupmoney.com -popupnation.com -popups.infostart.com -popuptraffic.com -porngraph.com -porntrack.com -postrelease.com -potenza.cz -pr-ten.de -praddpro.de -prchecker.info -precisioncounter.com -predictad.com -primaryads.com -primetime.net -privatecash.com -pro-advertising.com -pro.i-doctor.co.kr -proext.com -profero.com -projectwonderful.com -promo.badoink.com -promo.ulust.com -promo1.webcams.nl -promobenef.com -promos.fling.com -promote.pair.com -promotion-campaigns.com -pronetadvertising.com -propellerads.com -proranktracker.com -proton-tm.com -protraffic.com -provexia.com -prsitecheck.com -psstt.com -pub.chez.com -pub.club-internet.fr -pub.hardware.fr -pub.realmedia.fr -pubdirecte.com -publicidad.elmundo.es -pubmatic.com -pubs.lemonde.fr -pulse360.com -q.azcentral.com -qctop.com -qnsr.com -quantcast.com -quantserve.com -quarterserver.de -questaffiliates.net -quigo.com -quinst.com -quisma.com -rad.msn.com -radar.cedexis.com -radarurl.com -radiate.com -rampidads.com -rank-master.com -rank-master.de -rankchamp.de -ranking-charts.de -ranking-hits.de -ranking-id.de -ranking-links.de -ranking-liste.de -ranking-street.de -rankingchart.de -rankingscout.com -rankyou.com -rapidcounter.com -rate.ru -ratings.lycos.com -rb1.design.ru -re-directme.com -reachjunction.com -reactx.com -readserver.net -realcastmedia.com -realclix.com -realmedia-a800.d4p.net -realtechnetwork.com -realtracker.com -reduxmedia.com -reedbusiness.com.invalid -referralware.com -regnow.com -reinvigorate.net -reklam.rfsl.se -reklama.mironet.cz -reklama.reflektor.cz -reklamcsere.hu -reklame.unwired-i.net -reklamer.com.ua -relevanz10.de -relmaxtop.com -remotead.cnet.com -republika.onet.pl -retargeter.com -revenue.net -revenuedirect.com -revsci.net -revstats.com -richmails.com -richmedia.yimg.com -richwebmaster.com -rightstats.com -rlcdn.com -rle.ru -rmads.msn.com -rmedia.boston.com -roar.com -robotreplay.com -roia.biz -rok.com.com -rose.ixbt.com -rotabanner.com -roxr.net -rtbpop.com -rtbpopd.com -ru-traffic.com -ru4.com -rubiconproject.com -s.adroll.com -s2d6.com -sageanalyst.net -sail-horizon.com -samsungacr.com -samsungads.com -sbx.pagesjaunes.fr -scambiobanner.aruba.it -scanscout.com -scopelight.com -scorecardresearch.com -scratch2cash.com -scripte-monster.de -searchfeast.com -searchmarketing.com -searchramp.com -secure.webconnect.net -sedoparking.com -sedotracker.com -seeq.com.invalid -sensismediasmart.com.au -seo4india.com -serv0.com -servedby-buysellads.com -servedbyadbutler.com -servedbyopenx.com -servethis.com -services.hearstmags.com -serving-sys.com -sexaddpro.de -sexadvertentiesite.nl -sexcounter.com -sexinyourcity.com -sexlist.com -sextracker.com -sexystat.com -shareadspace.com -shareasale.com -sharepointads.com -sher.index.hu -shinystat.com -shinystat.it -shoppingads.com -siccash.com -sidebar.angelfire.com -sinoa.com -sitemeter.com -sitestat.com -sixsigmatraffic.com -skimresources.com -skylink.vn -slickaffiliate.com -slopeaota.com -smart4ads.com -smartadserver.com -smowtion.com -snapads.com -snoobi.com -socialspark.com -softclick.com.br -spacash.com -sparkstudios.com -specificmedia.co.uk -specificpop.com -spezialreporte.de -spinbox.techtracker.com -spinbox.versiontracker.com -sponsorads.de -sponsorpro.de -sponsors.thoughtsmedia.com -spot.fitness.com -spotxchange.com -spylog.com -spywarelabs.com -spywarenuker.com -spywords.com -srwww1.com -starffa.com -start.freeze.com -stat.cliche.se -stat.dealtime.com -stat.dyna.ultraweb.hu -stat.pl -stat.webmedia.pl -stat.zenon.net -stat24.com -stat24.meta.ua -statcounter.com -static.fmpub.net -static.itrack.it -staticads.btopenworld.com -statistik-gallup.net -statm.the-adult-company.com -stats.blogger.com -stats.cts-bv.nl -stats.directnic.com -stats.hyperinzerce.cz -stats.mirrorfootball.co.uk -stats.multiup.org -stats.olark.com -stats.self.com -stats.townnews.com -stats.unwired-i.net -stats.wordpress.com -stats.x14.eu -stats2.self.com -stats4all.com -statsie.com -statxpress.com -steelhouse.com -steelhousemedia.com -stickyadstv.com -suavalds.com -subscribe.hearstmags.com -sugoicounter.com -sumo.com -sumome.com -superclix.de -superstats.com -supertop.ru -supertop100.com -suptullog.com -surfmusik-adserver.de -swan-swan-goose.com -swissadsolutions.com -swordfishdc.com -sx.trhnt.com -t.insigit.com -t.pusk.ru -taboola.com -tacoda.net -tagular.com -tailsweep.co.uk -tailsweep.com -tailsweep.se -takru.com -tangerinenet.biz -tapad.com -targad.de -targetingnow.com -targetnet.com -targetpoint.com -tatsumi-sys.jp -tcads.net -tpc.googlesyndication.com -teads.tv -techclicks.net -teenrevenue.com -teliad.de -text-link-ads.com -textad.sexsearch.com -textads.biz -textads.opera.com -textlinks.com -tfag.de -theadhost.com -theads.me -thebugs.ws -thecounter.com -therapistla.com -therichkids.com -thrnt.com -thruport.com -tinybar.com -tizers.net -tlvmedia.com -tntclix.co.uk -top-casting-termine.de -top-site-list.com -top.list.ru -top.mail.ru -top.proext.com -top100-images.rambler.ru -top100.mafia.ru -top123.ro -top20.com.invalid -top20free.com -top90.ro -topbarh.box.sk -topbucks.com -topforall.com -topgamesites.net -toplist.cz -toplist.pornhost.com -toplista.mw.hu -toplistcity.com -topmmorpgsites.com.invalid -topping.com.ua -toprebates.com -topsafelist.net -topsearcher.com -topsir.com -topsite.lv -topsites.com.br -topstats.com -totemcash.com -touchclarity.com -touchclarity.natwest.com -tour.brazzers.com -tpnads.com -track.adform.net -track.anchorfree.com -track.gawker.com -trackalyzer.com -tracker.icerocket.com -tracker.marinsm.com -tracking.crunchiemedia.com -tracking.gajmp.com -tracking.internetstores.de -tracking.yourfilehost.com -tracking101.com -trackingsoft.com -trackmysales.com -tradeadexchange.com -tradedoubler.com -traffic-exchange.com -traffic.liveuniversenetwork.com -trafficadept.com -trafficbalancerouting.com -trafficcdn.liveuniversenetwork.com -trafficfactory.biz -trafficholder.com -traffichunt.com -trafficjunky.net -trafficleader.com -trafficsecrets.com -trafficspaces.net -trafficstrategies.com -trafficswarm.com -traffictrader.net -trafficz.com -trafficz.net -traffiq.com -trafic.ro -travis.bosscasinos.com -trekblue.com -trekdata.com -trendcounter.com -trendmd.com -trhunt.com -tribalfusion.com -trix.net -truehits.net -truehits1.gits.net.th -truehits2.gits.net.th -tsms-ad.tsms.com -tubemogul.com -turn.com -tvmtracker.com -twittad.com -tyroo.com -uarating.com -ukbanners.com -ultramercial.com -unanimis.co.uk -untd.com -updated.com -urlcash.net -us.a1.yimg.com -usapromotravel.com -usmsad.tom.com -utarget.co.uk -utils.mediageneral.net -v1.cnzz.com -validclick.com -valuead.com -valueclick.com -valueclickmedia.com -valuecommerce.com -valuesponsor.com -veille-referencement.com -ventivmedia.com -vericlick.com -vertadnet.com -veruta.com -vervewireless.com -vibrantmedia.com -video-stats.video.google.com -videoegg.com -view4cash.de -viewpoint.com -visistat.com -visit.webhosting.yahoo.com -visitbox.de -visual-pagerank.fr -visualrevenue.com -voicefive.com -vpon.com -vrs.cz -vs.tucows.com -vungle.com -warlog.ru -wdads.sx.atl.publicus.com -web-stat.com -web.informer.com -web2.deja.com -webads.co.nz -webads.nl -webangel.ru -webcash.nl -webcounter.cz -webcounter.goweb.de -webgains.com -webmaster-partnerprogramme24.de -webmasterplan.com -webmasterplan.de -weborama.fr -webpower.com -webreseau.com -webseoanalytics.com -websponsors.com -webstat.channel4.com -webstat.com -webstat.net -webstats4u.com -webtrackerplus.com -webtraffic.se -webtraxx.de -webtrendslive.com -werbung.meteoxpress.com -wetrack.it -whaleads.com -whenu.com -whispa.com -whoisonline.net -wholesaletraffic.info -widespace.com -widgetbucks.com -wikia-ads.wikia.com -window.nixnet.cz -wintricksbanner.googlepages.com -witch-counter.de -wlmarketing.com -wmirk.ru -wonderlandads.com -wondoads.de -woopra.com -worldwide-cash.net -wtlive.com -www-banner.chat.ru -www-google-analytics.l.google.com -www.banner-link.com.br -www.dnps.com -www.kaplanindex.com -www.money4exit.de -www.photo-ads.co.uk -www1.gto-media.com -www8.glam.com -wwwpromoter.com -x-traceur.com -x6.yakiuchi.com -xchange.ro -xclicks.net -xertive.com -xg4ken.com -xiti.com -xplusone.com -xponsor.com -xq1.net -xrea.com -xtendmedia.com -xtremetop100.com -xxxcounter.com -xxxmyself.com -y.ibsys.com -yab-adimages.s3.amazonaws.com -yabuka.com -yadro.ru -yesads.com -yesadvertising.com -yieldads.com -yieldlab.net -yieldmanager.com -yieldmanager.net -yieldmo.com -yieldtraffic.com -yoc.mobi -yoggrt.com -z5x.net -zangocash.com -zanox-affiliate.de -zanox.com -zantracker.com -zedo.com -zencudo.co.uk -zenkreka.com -zenzuu.com -zeus.developershed.com -zeusclicks.com -zintext.com -zmedia.com -zv1.november-lax.com \ No newline at end of file diff --git a/app/src/main/assets/css/components/round_icons.css b/app/src/main/assets/css/components/round_icons.css deleted file mode 100644 index c765d2ab..00000000 --- a/app/src/main/assets/css/components/round_icons.css +++ /dev/null @@ -1,4 +0,0 @@ -#threadlist_rows, [role*=presentation] img._1e_c, -i.img.profpic:not(._1_0m), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) { - border-radius: 50% !important; -} diff --git a/app/src/main/assets/css/components/round_icons.scss b/app/src/main/assets/css/components/round_icons.scss deleted file mode 100644 index c00fe1bf..00000000 --- a/app/src/main/assets/css/components/round_icons.scss +++ /dev/null @@ -1,4 +0,0 @@ -#threadlist_rows, [role*=presentation] img._1e_c, -i.img.profpic:not(._1_0m), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) { - border-radius: 50% !important; -} diff --git a/app/src/main/assets/css/core/_base.scss b/app/src/main/assets/css/core/_base.scss deleted file mode 100644 index 472319fe..00000000 --- a/app/src/main/assets/css/core/_base.scss +++ /dev/null @@ -1,107 +0,0 @@ -@mixin placeholder { - ::-webkit-input-placeholder { - @content; - } - - :-moz-placeholder { - @content; - } - - ::-moz-placeholder { - @content; - } - - :-ms-input-placeholder { - @content; - } -} - -@mixin keyframes($name) { - @-webkit-keyframes #{$name} { - @content; - } - - @-moz-keyframes #{$name} { - @content; - } - - //@-ms-keyframes #{$name} { - // @content; - //} - - @keyframes #{$name} { - @content; - } -} - -// Helper function to replace characters in a string -@function str-replace($string, $search, $replace: "") { - $index: str-index($string, $search); - - @return if($index, str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace), $string); -} - -// https://css-tricks.com/probably-dont-base64-svg/ -// SVG optimization thanks to https://codepen.io/jakob-e/pen/doMoML -// Function to create an optimized svg url -// Version: 1.0.6 -@function svg-url($svg) { - // - // Add missing namespace - // - @if not str-index($svg, xmlns) { - $svg: str-replace($svg, "", "%3E"); - - // - // The maybe list - // - // Keep size and compile time down - // ... only add on documented fail - // - // $chunk: str-replace($chunk, '&', '%26'); - // $chunk: str-replace($chunk, '|', '%7C'); - // $chunk: str-replace($chunk, '[', '%5B'); - // $chunk: str-replace($chunk, ']', '%5D'); - // $chunk: str-replace($chunk, '^', '%5E'); - // $chunk: str-replace($chunk, '`', '%60'); - // $chunk: str-replace($chunk, ';', '%3B'); - // $chunk: str-replace($chunk, '?', '%3F'); - // $chunk: str-replace($chunk, ':', '%3A'); - // $chunk: str-replace($chunk, '@', '%40'); - // $chunk: str-replace($chunk, '=', '%3D'); - - $encoded: #{$encoded}#{$chunk}; - $index: $index + $slice; - } - - @return url("data:image/svg+xml,#{$encoded}"); -} - -// Background svg mixin -@mixin background-svg($svg, $extra: "no-repeat") { - background: svg-url($svg) unquote($extra) !important; -} diff --git a/app/src/main/assets/css/core/_colors.scss b/app/src/main/assets/css/core/_colors.scss deleted file mode 100644 index 1411a857..00000000 --- a/app/src/main/assets/css/core/_colors.scss +++ /dev/null @@ -1,18 +0,0 @@ -$bg_transparent: rgba(#f0f, 0.02) !default; - -//Keep above as first line so partials aren't compiled -//Our default colors are test colors; production files should always import the actual colors - -$text: #d7b0d7 !default; -// must be visible with accent as the background -$accent_text: #76d7c2 !default; -$link: #9266d5 !default; -$accent: #3b5998 !default; -$background: #451515 !default; -// background2 must be transparent -$background2: rgba(lighten($background, 35%), 0.35) !default; //Also change ratio in material_light -$bg_opaque: rgba($background, 1.0) !default; -$bg_opaque2: rgba($background2, 1.0) !default; -$card: #239645 !default; -$tint: #ff4682 !default; // must be different from $background -$divider: rgba($text, 0.3) !default; diff --git a/app/src/main/assets/css/core/_core_bg.scss b/app/src/main/assets/css/core/_core_bg.scss deleted file mode 100644 index 21c20bcc..00000000 --- a/app/src/main/assets/css/core/_core_bg.scss +++ /dev/null @@ -1,86 +0,0 @@ -#viewport { - background: $background !important; -} - -body, :root, #root, #header, #MComposer, [style*="background-color"], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, -._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, -._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, -._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, -._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, -._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, -.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, -.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, -._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, -._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, -._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, -._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, -._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, -._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, -.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, -._ue6, ._hdn._hdn, -._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, -._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, -._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, -._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, -._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { - background: $bg_transparent !important; -} - -//card related -._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { - background: $card !important; -} - -// unread related - -.aclb { - background: $tint !important; -} - -//contains images so must have background-color -._cv_, ._2sq8 { - background-color: $bg_transparent !important; -} - -#page, ._8l7, ._-j8, ._-j9, ._6o5v { - background: transparent !important; -} - -.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, -.mentions-suggest, ._1xoz, ._1xow { - background: $bg_opaque !important; -} - -._403n, ._14v5 ._14v8, ._1-kc { - background: $bg_opaque2 !important; -} - -button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, -._590n, ._4g8h, ._2cpp, ._58a0.touched:after, -.timeline .timelinePublisher, .touched, .sharerAttachment, -.item a.primary.touched .primarywrap, ._38nq, ._537a, -._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, -.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, -._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, -._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, -._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, -._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, -#addMembersTypeahead .mToken.mTokenWeakReference, -.acbk { - background: $background2 !important; -} - -.mQuestionsPollResultsBar .shaded { - background: $accent !important; -} - -._220g, ._1_y8:after, ._6pk6, -._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, -._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { - background: $divider !important; -} - -//fab -button ._v89 ._54k8._1fl1 { - background: $accent !important; -} \ No newline at end of file diff --git a/app/src/main/assets/css/core/_core_border.scss b/app/src/main/assets/css/core/_core_border.scss deleted file mode 100644 index c366bc14..00000000 --- a/app/src/main/assets/css/core/_core_border.scss +++ /dev/null @@ -1,94 +0,0 @@ -//border between like and comment -._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, -._5j35::after, ._2k4b, ._3to7, ._4nw8 { - border-left: 1px solid $divider !important; -} - -._4_d1, ._5cni { - border-right: 1px solid $divider !important; -} - -//above see more -._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, -._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, -._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, -._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, -._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { - border-top: 1px solid $divider !important; -} - -._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, -._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, -._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, -._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, -.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, -._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, -.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, -._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, -._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, -._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, -._5fjw > :first-child { - border-bottom: 1px solid $divider !important; -} - -.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, -._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { - border-top: 1px solid $divider !important; - border-bottom: 1px solid $divider !important; -} - -//friend card border -._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, -.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, -._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, -._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, -._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, -._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, -.home-notification .touchable.touched, ._6beo ._6ber, -._73ku ._73jw, -._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, -._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { - border: 1px solid $divider !important; -} - -.mQuestionsPollResultsBar .shaded, ._1027._13sm { - border: 1px solid $text !important; -} - -._3gka { - border: 1px dashed $divider !important; -} - -//link card bottom border -._4o58::after, .acr, ._t21, ._2bdb, -.acw, .aclb, ._4qax, ._5h8f { - border-color: $divider !important; -} - -// like, comment, share divider -._15ks ._15kl::before { - border-left: 1px solid transparent !important; -} - -._56bf, .touch .btn { - border-radius: 0 !important; - border: 0 !important; -} - -//page side tab layout -._2cis { - border-left: 10px solid $bg_transparent !important; - border-right: 10px solid $bg_transparent !important; -} - -._2cir.selected, ._42rv, ._5zma, ._2x2s { - border-bottom: 3px solid $text !important; -} - -._1ss6 { - border-left: 2px solid $text !important; -} - -._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { - border-bottom: 1px solid $text !important; -} \ No newline at end of file diff --git a/app/src/main/assets/css/core/_core_messenger.scss b/app/src/main/assets/css/core/_core_messenger.scss deleted file mode 100644 index 608fc23d..00000000 --- a/app/src/main/assets/css/core/_core_messenger.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Not all messenger related components are here; only the main ones. -// Borders for instance are merged into core_border - -// Other person's message bubble -._34ee { - background: $background2 !important; - color: $text !important; - -} - -// Your message bubble; order matters -._34em ._34ee { - background: $accent !important; - color: $accent_text !important; -} - -// Sticker page -._5as0, ._5cni, ._5as2 { - background: $bg_opaque !important; -} \ No newline at end of file diff --git a/app/src/main/assets/css/core/_core_text.scss b/app/src/main/assets/css/core/_core_text.scss deleted file mode 100644 index 154cee84..00000000 --- a/app/src/main/assets/css/core/_core_text.scss +++ /dev/null @@ -1,39 +0,0 @@ -[style*="color"], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, -._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, -.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, -._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, -._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, -._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, -._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, -._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, -._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, -._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, -._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, -._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, -textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, -._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, -._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, -._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, -._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, -._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, -div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, -a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, -.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, -._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, -._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, -h1, h2, h3, h4, h5, h6 { - color: $text !important; -} - -strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { - color: $accent !important; -} - -._42nf ._42ng { - color: transparent !important; -} - -// most links do not have a special color. We will highlight those in posts and messages -p > a, .msg span > a { - color: $link !important; -} \ No newline at end of file diff --git a/app/src/main/assets/css/core/_main.scss b/app/src/main/assets/css/core/_main.scss deleted file mode 100644 index 3e972f93..00000000 --- a/app/src/main/assets/css/core/_main.scss +++ /dev/null @@ -1,6 +0,0 @@ -@import "core"; -@import "svg"; - -//this file is used as the base for all themes -//given that svgs take a lot of characters, we won't compile them when testing -//therefore we use the core scss diff --git a/app/src/main/assets/css/core/_svg.scss b/app/src/main/assets/css/core/_svg.scss deleted file mode 100644 index 8c714438..00000000 --- a/app/src/main/assets/css/core/_svg.scss +++ /dev/null @@ -1,74 +0,0 @@ -// icons courtesy of https://material.io/icons/ - -$camera: ''; - -// status upload image -._50uu { - @include background-svg($camera); -} - -$video: ''; - -// status upload video -._50uw { - @include background-svg($video); -} - -$like: ''; -$like_selected: ''; - -// 2018/12/29 -// Previously ._15km ._15ko::before and ._15km ._15ko._77la::before; however, reaction changes no longer affect this element -// The robust measure seems to be the parent of a[data-sigil~="like-reaction-flyout"] along with [data-sigil~="like"] for an unliked post -// and [data-sigil~="unlike"] for a liked post -._15km ._15ko::before { - @include background-svg($like); - background-position: center !important; -} - -._15km ._15ko._77la::before { - @include background-svg($like_selected); - background-position: center !important; -} - -$comment: ''; - -._15km ._15kq::before { - @include background-svg($comment); - background-position: center !important; -} - -$share: ''; - -._15km ._15kr::before { - @include background-svg($share); - background-position: center !important; -} - -$more_horiz: ''; - -//$menus: ".sp_89zNula0Qh5", -//".sp_MP2OtCXORz9", -//".sp_NIWBacTn8LF", -//// 2018/12/31 -//".sp_9ZFVhnFyWsw", -//// 2019/01/03 -//".sp_SJIJjSlGEIO"; -// -//$menu_collector: (); -// -//@each $menu in $menus { -// $menu_collector: append($menu_collector, unquote('#{$menu}'), 'comma'); -// $menu_collector: append($menu_collector, unquote('#{$menu}_2x'), 'comma'); -// $menu_collector: append($menu_collector, unquote('#{$menu}_3x'), 'comma'); -//} -// -//#{$menu_collector} { -// @include background-svg($more_horiz); -// background-position: center !important; -//} - -.story_body_container i.img[data-sigil*="story-popup-context"] { - @include background-svg($more_horiz); - background-position: center !important; -} \ No newline at end of file diff --git a/app/src/main/assets/css/core/core.css b/app/src/main/assets/css/core/core.css deleted file mode 100644 index 1d48fa35..00000000 --- a/app/src/main/assets/css/core/core.css +++ /dev/null @@ -1,306 +0,0 @@ -[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, -._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, -.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, -._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, -._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, -._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, -._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, -._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, -._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, -._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, -._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, -._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, -textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, -._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, -._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, -._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, -._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, -._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, -div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, -a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, -.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, -._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, -._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, -h1, h2, h3, h4, h5, h6 { - color: #d7b0d7 !important; -} - -strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { - color: #3b5998 !important; -} - -._42nf ._42ng { - color: transparent !important; -} - -p > a, .msg span > a { - color: #9266d5 !important; -} - -#viewport { - background: #451515 !important; -} - -body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, -._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, -._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, -._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, -._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, -._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, -.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, -.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, -._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, -._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, -._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, -._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, -._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, -._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, -.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, -._ue6, ._hdn._hdn, -._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, -._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, -._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, -._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, -._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { - background: rgba(255, 0, 255, 0.02) !important; -} - -._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { - background: #239645 !important; -} - -.aclb { - background: #ff4682 !important; -} - -._cv_, ._2sq8 { - background-color: rgba(255, 0, 255, 0.02) !important; -} - -#page, ._8l7, ._-j8, ._-j9, ._6o5v { - background: transparent !important; -} - -.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, -.mentions-suggest, ._1xoz, ._1xow { - background: #451515 !important; -} - -._403n, ._14v5 ._14v8, ._1-kc { - background: #c74646 !important; -} - -button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, -._590n, ._4g8h, ._2cpp, ._58a0.touched:after, -.timeline .timelinePublisher, .touched, .sharerAttachment, -.item a.primary.touched .primarywrap, ._38nq, ._537a, -._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, -.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, -._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, -._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, -._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, -._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, -#addMembersTypeahead .mToken.mTokenWeakReference, -.acbk { - background: rgba(199, 70, 70, 0.35) !important; -} - -.mQuestionsPollResultsBar .shaded { - background: #3b5998 !important; -} - -._220g, ._1_y8:after, ._6pk6, -._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, -._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { - background: rgba(215, 176, 215, 0.3) !important; -} - -button ._v89 ._54k8._1fl1 { - background: #3b5998 !important; -} - -._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, -._5j35::after, ._2k4b, ._3to7, ._4nw8 { - border-left: 1px solid rgba(215, 176, 215, 0.3) !important; -} - -._4_d1, ._5cni { - border-right: 1px solid rgba(215, 176, 215, 0.3) !important; -} - -._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, -._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, -._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, -._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, -._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { - border-top: 1px solid rgba(215, 176, 215, 0.3) !important; -} - -._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, -._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, -._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, -._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, -.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, -._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, -.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, -._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, -._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, -._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, -._5fjw > :first-child { - border-bottom: 1px solid rgba(215, 176, 215, 0.3) !important; -} - -.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, -._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { - border-top: 1px solid rgba(215, 176, 215, 0.3) !important; - border-bottom: 1px solid rgba(215, 176, 215, 0.3) !important; -} - -._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, -.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, -._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, -._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, -._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, -._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, -.home-notification .touchable.touched, ._6beo ._6ber, -._73ku ._73jw, -._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, -._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { - border: 1px solid rgba(215, 176, 215, 0.3) !important; -} - -.mQuestionsPollResultsBar .shaded, ._1027._13sm { - border: 1px solid #d7b0d7 !important; -} - -._3gka { - border: 1px dashed rgba(215, 176, 215, 0.3) !important; -} - -._4o58::after, .acr, ._t21, ._2bdb, -.acw, .aclb, ._4qax, ._5h8f { - border-color: rgba(215, 176, 215, 0.3) !important; -} - -._15ks ._15kl::before { - border-left: 1px solid transparent !important; -} - -._56bf, .touch .btn { - border-radius: 0 !important; - border: 0 !important; -} - -._2cis { - border-left: 10px solid rgba(255, 0, 255, 0.02) !important; - border-right: 10px solid rgba(255, 0, 255, 0.02) !important; -} - -._2cir.selected, ._42rv, ._5zma, ._2x2s { - border-bottom: 3px solid #d7b0d7 !important; -} - -._1ss6 { - border-left: 2px solid #d7b0d7 !important; -} - -._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { - border-bottom: 1px solid #d7b0d7 !important; -} - -._34ee { - background: rgba(199, 70, 70, 0.35) !important; - color: #d7b0d7 !important; -} - -._34em ._34ee { - background: #3b5998 !important; - color: #76d7c2 !important; -} - -._5as0, ._5cni, ._5as2 { - background: #451515 !important; -} - -*, *::after, *::before { - text-shadow: none !important; - box-shadow: none !important; -} - -[data-sigil=m_login_upsell], -[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { - display: none !important; -} - -::-webkit-input-placeholder { - color: #d7b0d7 !important; -} - -:-moz-placeholder { - color: #d7b0d7 !important; -} - -::-moz-placeholder { - color: #d7b0d7 !important; -} - -:-ms-input-placeholder { - color: #d7b0d7 !important; -} - -.excessItem { - outline: rgba(215, 176, 215, 0.3) !important; -} - -._3m1m { - background: linear-gradient(transparent, #451515) !important; -} - -@-webkit-keyframes highlightFade { - 0%, 50% { - background: rgba(199, 70, 70, 0.35); - } - 100% { - background: rgba(255, 0, 255, 0.02); - } -} -@-moz-keyframes highlightFade { - 0%, 50% { - background: rgba(199, 70, 70, 0.35); - } - 100% { - background: rgba(255, 0, 255, 0.02); - } -} -@keyframes highlightFade { - 0%, 50% { - background: rgba(199, 70, 70, 0.35); - } - 100% { - background: rgba(255, 0, 255, 0.02); - } -} -@-webkit-keyframes chatHighlightAnimation { - 0%, 100% { - background: rgba(255, 0, 255, 0.02); - } - 50% { - background: rgba(199, 70, 70, 0.35); - } -} -@-moz-keyframes chatHighlightAnimation { - 0%, 100% { - background: rgba(255, 0, 255, 0.02); - } - 50% { - background: rgba(199, 70, 70, 0.35); - } -} -@keyframes chatHighlightAnimation { - 0%, 100% { - background: rgba(255, 0, 255, 0.02); - } - 50% { - background: rgba(199, 70, 70, 0.35); - } -} diff --git a/app/src/main/assets/css/core/core.scss b/app/src/main/assets/css/core/core.scss deleted file mode 100644 index 38086529..00000000 --- a/app/src/main/assets/css/core/core.scss +++ /dev/null @@ -1,54 +0,0 @@ -@import "colors"; -@import "base"; -@import "core_text"; -@import "core_bg"; -@import "core_border"; -@import "core_messenger"; - -//GLOBAL overrides; use with caution -*, *::after, *::before { - text-shadow: none !important; - box-shadow: none !important; -} - -// .touch .btnS, button, ._94v, ._590n { -// box-shadow: none !important; -// } - -[data-sigil=m_login_upsell], -[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { - display: none !important; -} - -@include placeholder { - color: $text !important; -} - -.excessItem { - outline: $divider !important; -} - -._3m1m { - background: linear-gradient(transparent, $bg_opaque) !important; -} - -//new comment -@include keyframes(highlightFade) { - 0%, 50% { - background: $background2; - } - - 100% { - background: $bg_transparent; - } -} - -@include keyframes(chatHighlightAnimation) { - 0%, 100% { - background: $bg_transparent; - } - - 50% { - background: $background2; - } -} diff --git a/app/src/main/assets/css/themes/.gitignore b/app/src/main/assets/css/themes/.gitignore deleted file mode 100644 index 01d06441..00000000 --- a/app/src/main/assets/css/themes/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -test.scss -test.css \ No newline at end of file diff --git a/app/src/main/assets/css/themes/custom.css b/app/src/main/assets/css/themes/custom.css deleted file mode 100644 index e38c6de0..00000000 --- a/app/src/main/assets/css/themes/custom.css +++ /dev/null @@ -1,338 +0,0 @@ -[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, -._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, -.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, -._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, -._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, -._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, -._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, -._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, -._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, -._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, -._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, -._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, -textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, -._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, -._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, -._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, -._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, -._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, -div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, -a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, -.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, -._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, -._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, -h1, h2, h3, h4, h5, h6 { - color: $T$ !important; -} - -strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { - color: $A$ !important; -} - -._42nf ._42ng { - color: transparent !important; -} - -p > a, .msg span > a { - color: $TT$ !important; -} - -#viewport { - background: $B$ !important; -} - -body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, -._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, -._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, -._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, -._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, -._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, -.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, -.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, -._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, -._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, -._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, -._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, -._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, -._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, -.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, -._ue6, ._hdn._hdn, -._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, -._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, -._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, -._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, -._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { - background: $BT$ !important; -} - -._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { - background: $C$ !important; -} - -.aclb { - background: $TI$ !important; -} - -._cv_, ._2sq8 { - background-color: $BT$ !important; -} - -#page, ._8l7, ._-j8, ._-j9, ._6o5v { - background: transparent !important; -} - -.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, -.mentions-suggest, ._1xoz, ._1xow { - background: $O$ !important; -} - -._403n, ._14v5 ._14v8, ._1-kc { - background: $OO$ !important; -} - -button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, -._590n, ._4g8h, ._2cpp, ._58a0.touched:after, -.timeline .timelinePublisher, .touched, .sharerAttachment, -.item a.primary.touched .primarywrap, ._38nq, ._537a, -._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, -.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, -._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, -._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, -._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, -._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, -#addMembersTypeahead .mToken.mTokenWeakReference, -.acbk { - background: $BBT$ !important; -} - -.mQuestionsPollResultsBar .shaded { - background: $A$ !important; -} - -._220g, ._1_y8:after, ._6pk6, -._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, -._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { - background: $D$ !important; -} - -button ._v89 ._54k8._1fl1 { - background: $A$ !important; -} - -._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, -._5j35::after, ._2k4b, ._3to7, ._4nw8 { - border-left: 1px solid $D$ !important; -} - -._4_d1, ._5cni { - border-right: 1px solid $D$ !important; -} - -._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, -._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, -._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, -._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, -._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { - border-top: 1px solid $D$ !important; -} - -._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, -._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, -._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, -._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, -.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, -._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, -.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, -._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, -._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, -._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, -._5fjw > :first-child { - border-bottom: 1px solid $D$ !important; -} - -.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, -._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { - border-top: 1px solid $D$ !important; - border-bottom: 1px solid $D$ !important; -} - -._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, -.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, -._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, -._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, -._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, -._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, -.home-notification .touchable.touched, ._6beo ._6ber, -._73ku ._73jw, -._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, -._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { - border: 1px solid $D$ !important; -} - -.mQuestionsPollResultsBar .shaded, ._1027._13sm { - border: 1px solid $T$ !important; -} - -._3gka { - border: 1px dashed $D$ !important; -} - -._4o58::after, .acr, ._t21, ._2bdb, -.acw, .aclb, ._4qax, ._5h8f { - border-color: $D$ !important; -} - -._15ks ._15kl::before { - border-left: 1px solid transparent !important; -} - -._56bf, .touch .btn { - border-radius: 0 !important; - border: 0 !important; -} - -._2cis { - border-left: 10px solid $BT$ !important; - border-right: 10px solid $BT$ !important; -} - -._2cir.selected, ._42rv, ._5zma, ._2x2s { - border-bottom: 3px solid $T$ !important; -} - -._1ss6 { - border-left: 2px solid $T$ !important; -} - -._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { - border-bottom: 1px solid $T$ !important; -} - -._34ee { - background: $BBT$ !important; - color: $T$ !important; -} - -._34em ._34ee { - background: $A$ !important; - color: $AT$ !important; -} - -._5as0, ._5cni, ._5as2 { - background: $O$ !important; -} - -*, *::after, *::before { - text-shadow: none !important; - box-shadow: none !important; -} - -[data-sigil=m_login_upsell], -[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { - display: none !important; -} - -::-webkit-input-placeholder { - color: $T$ !important; -} - -:-moz-placeholder { - color: $T$ !important; -} - -::-moz-placeholder { - color: $T$ !important; -} - -:-ms-input-placeholder { - color: $T$ !important; -} - -.excessItem { - outline: $D$ !important; -} - -._3m1m { - background: linear-gradient(transparent, $O$) !important; -} - -@-webkit-keyframes highlightFade { - 0%, 50% { - background: $BBT$; - } - 100% { - background: $BT$; - } -} -@-moz-keyframes highlightFade { - 0%, 50% { - background: $BBT$; - } - 100% { - background: $BT$; - } -} -@keyframes highlightFade { - 0%, 50% { - background: $BBT$; - } - 100% { - background: $BT$; - } -} -@-webkit-keyframes chatHighlightAnimation { - 0%, 100% { - background: $BT$; - } - 50% { - background: $BBT$; - } -} -@-moz-keyframes chatHighlightAnimation { - 0%, 100% { - background: $BT$; - } - 50% { - background: $BBT$; - } -} -@keyframes chatHighlightAnimation { - 0%, 100% { - background: $BT$; - } - 50% { - background: $BBT$; - } -} -._50uu { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; -} - -._50uw { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; -} - -._15km ._15ko::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15ko._77la::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$A$" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kq::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kr::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -.story_body_container i.img[data-sigil*=story-popup-context] { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="$T$" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} diff --git a/app/src/main/assets/css/themes/custom.scss b/app/src/main/assets/css/themes/custom.scss deleted file mode 100644 index 50c029fb..00000000 --- a/app/src/main/assets/css/themes/custom.scss +++ /dev/null @@ -1,14 +0,0 @@ -$bg_transparent: unquote('$BT$'); -$text: unquote('$T$'); -$link: unquote('$TT$'); -$accent: unquote('$A$'); -$accent_text: unquote('$AT$'); -$background: unquote('$B$'); -$background2: unquote('$BBT$'); -$bg_opaque: unquote('$O$'); -$bg_opaque2: unquote('$OO$'); -$divider: unquote('$D$'); -$card: unquote('$C$'); -$tint: unquote('$TI$'); - -@import "../core/main"; diff --git a/app/src/main/assets/css/themes/material_amoled.css b/app/src/main/assets/css/themes/material_amoled.css deleted file mode 100644 index c821003e..00000000 --- a/app/src/main/assets/css/themes/material_amoled.css +++ /dev/null @@ -1,338 +0,0 @@ -[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, -._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, -.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, -._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, -._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, -._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, -._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, -._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, -._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, -._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, -._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, -._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, -textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, -._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, -._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, -._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, -._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, -._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, -div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, -a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, -.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, -._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, -._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, -h1, h2, h3, h4, h5, h6 { - color: #fff !important; -} - -strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { - color: #5d86dd !important; -} - -._42nf ._42ng { - color: transparent !important; -} - -p > a, .msg span > a { - color: #5d86dd !important; -} - -#viewport { - background: #000 !important; -} - -body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, -._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, -._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, -._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, -._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, -._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, -.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, -.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, -._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, -._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, -._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, -._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, -._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, -._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, -.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, -._ue6, ._hdn._hdn, -._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, -._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, -._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, -._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, -._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { - background: #000 !important; -} - -._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { - background: rgba(0, 0, 0, 0.35) !important; -} - -.aclb { - background: rgba(255, 255, 255, 0.2) !important; -} - -._cv_, ._2sq8 { - background-color: #000 !important; -} - -#page, ._8l7, ._-j8, ._-j9, ._6o5v { - background: transparent !important; -} - -.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, -.mentions-suggest, ._1xoz, ._1xow { - background: black !important; -} - -._403n, ._14v5 ._14v8, ._1-kc { - background: black !important; -} - -button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, -._590n, ._4g8h, ._2cpp, ._58a0.touched:after, -.timeline .timelinePublisher, .touched, .sharerAttachment, -.item a.primary.touched .primarywrap, ._38nq, ._537a, -._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, -.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, -._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, -._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, -._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, -._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, -#addMembersTypeahead .mToken.mTokenWeakReference, -.acbk { - background: rgba(0, 0, 0, 0.35) !important; -} - -.mQuestionsPollResultsBar .shaded { - background: #5d86dd !important; -} - -._220g, ._1_y8:after, ._6pk6, -._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, -._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { - background: rgba(255, 255, 255, 0.3) !important; -} - -button ._v89 ._54k8._1fl1 { - background: #5d86dd !important; -} - -._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, -._5j35::after, ._2k4b, ._3to7, ._4nw8 { - border-left: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._4_d1, ._5cni { - border-right: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, -._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, -._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, -._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, -._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { - border-top: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, -._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, -._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, -._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, -.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, -._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, -.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, -._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, -._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, -._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, -._5fjw > :first-child { - border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, -._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { - border-top: 1px solid rgba(255, 255, 255, 0.3) !important; - border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, -.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, -._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, -._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, -._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, -._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, -.home-notification .touchable.touched, ._6beo ._6ber, -._73ku ._73jw, -._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, -._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { - border: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -.mQuestionsPollResultsBar .shaded, ._1027._13sm { - border: 1px solid #fff !important; -} - -._3gka { - border: 1px dashed rgba(255, 255, 255, 0.3) !important; -} - -._4o58::after, .acr, ._t21, ._2bdb, -.acw, .aclb, ._4qax, ._5h8f { - border-color: rgba(255, 255, 255, 0.3) !important; -} - -._15ks ._15kl::before { - border-left: 1px solid transparent !important; -} - -._56bf, .touch .btn { - border-radius: 0 !important; - border: 0 !important; -} - -._2cis { - border-left: 10px solid #000 !important; - border-right: 10px solid #000 !important; -} - -._2cir.selected, ._42rv, ._5zma, ._2x2s { - border-bottom: 3px solid #fff !important; -} - -._1ss6 { - border-left: 2px solid #fff !important; -} - -._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { - border-bottom: 1px solid #fff !important; -} - -._34ee { - background: rgba(0, 0, 0, 0.35) !important; - color: #fff !important; -} - -._34em ._34ee { - background: #5d86dd !important; - color: #fff !important; -} - -._5as0, ._5cni, ._5as2 { - background: black !important; -} - -*, *::after, *::before { - text-shadow: none !important; - box-shadow: none !important; -} - -[data-sigil=m_login_upsell], -[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { - display: none !important; -} - -::-webkit-input-placeholder { - color: #fff !important; -} - -:-moz-placeholder { - color: #fff !important; -} - -::-moz-placeholder { - color: #fff !important; -} - -:-ms-input-placeholder { - color: #fff !important; -} - -.excessItem { - outline: rgba(255, 255, 255, 0.3) !important; -} - -._3m1m { - background: linear-gradient(transparent, black) !important; -} - -@-webkit-keyframes highlightFade { - 0%, 50% { - background: rgba(0, 0, 0, 0.35); - } - 100% { - background: #000; - } -} -@-moz-keyframes highlightFade { - 0%, 50% { - background: rgba(0, 0, 0, 0.35); - } - 100% { - background: #000; - } -} -@keyframes highlightFade { - 0%, 50% { - background: rgba(0, 0, 0, 0.35); - } - 100% { - background: #000; - } -} -@-webkit-keyframes chatHighlightAnimation { - 0%, 100% { - background: #000; - } - 50% { - background: rgba(0, 0, 0, 0.35); - } -} -@-moz-keyframes chatHighlightAnimation { - 0%, 100% { - background: #000; - } - 50% { - background: rgba(0, 0, 0, 0.35); - } -} -@keyframes chatHighlightAnimation { - 0%, 100% { - background: #000; - } - 50% { - background: rgba(0, 0, 0, 0.35); - } -} -._50uu { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; -} - -._50uw { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; -} - -._15km ._15ko::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15ko._77la::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%235d86dd" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kq::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kr::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -.story_body_container i.img[data-sigil*=story-popup-context] { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23fff" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} diff --git a/app/src/main/assets/css/themes/material_amoled.scss b/app/src/main/assets/css/themes/material_amoled.scss deleted file mode 100644 index 19190126..00000000 --- a/app/src/main/assets/css/themes/material_amoled.scss +++ /dev/null @@ -1,11 +0,0 @@ -$text: #fff; -$accent_text: #fff; -$link: #5d86dd; -$accent: #5d86dd; -$background: #000; -$background2: rgba($background, 0.35); -$bg_transparent: $background; -$card: $background2; -$tint: rgba(#fff, 0.2); - -@import "../core/main"; diff --git a/app/src/main/assets/css/themes/material_dark.css b/app/src/main/assets/css/themes/material_dark.css deleted file mode 100644 index 0dc739eb..00000000 --- a/app/src/main/assets/css/themes/material_dark.css +++ /dev/null @@ -1,338 +0,0 @@ -[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, -._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, -.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, -._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, -._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, -._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, -._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, -._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, -._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, -._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, -._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, -._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, -textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, -._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, -._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, -._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, -._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, -._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, -div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, -a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, -.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, -._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, -._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, -h1, h2, h3, h4, h5, h6 { - color: #fff !important; -} - -strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { - color: #5d86dd !important; -} - -._42nf ._42ng { - color: transparent !important; -} - -p > a, .msg span > a { - color: #5d86dd !important; -} - -#viewport { - background: #303030 !important; -} - -body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, -._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, -._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, -._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, -._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, -._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, -.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, -.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, -._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, -._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, -._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, -._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, -._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, -._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, -.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, -._ue6, ._hdn._hdn, -._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, -._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, -._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, -._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, -._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { - background: #303030 !important; -} - -._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { - background: #353535 !important; -} - -.aclb { - background: rgba(255, 255, 255, 0.2) !important; -} - -._cv_, ._2sq8 { - background-color: #303030 !important; -} - -#page, ._8l7, ._-j8, ._-j9, ._6o5v { - background: transparent !important; -} - -.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, -.mentions-suggest, ._1xoz, ._1xow { - background: #303030 !important; -} - -._403n, ._14v5 ._14v8, ._1-kc { - background: #898989 !important; -} - -button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, -._590n, ._4g8h, ._2cpp, ._58a0.touched:after, -.timeline .timelinePublisher, .touched, .sharerAttachment, -.item a.primary.touched .primarywrap, ._38nq, ._537a, -._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, -.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, -._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, -._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, -._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, -._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, -#addMembersTypeahead .mToken.mTokenWeakReference, -.acbk { - background: rgba(137, 137, 137, 0.35) !important; -} - -.mQuestionsPollResultsBar .shaded { - background: #5d86dd !important; -} - -._220g, ._1_y8:after, ._6pk6, -._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, -._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { - background: rgba(255, 255, 255, 0.3) !important; -} - -button ._v89 ._54k8._1fl1 { - background: #5d86dd !important; -} - -._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, -._5j35::after, ._2k4b, ._3to7, ._4nw8 { - border-left: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._4_d1, ._5cni { - border-right: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, -._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, -._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, -._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, -._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { - border-top: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, -._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, -._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, -._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, -.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, -._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, -.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, -._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, -._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, -._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, -._5fjw > :first-child { - border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, -._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { - border-top: 1px solid rgba(255, 255, 255, 0.3) !important; - border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, -.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, -._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, -._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, -._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, -._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, -.home-notification .touchable.touched, ._6beo ._6ber, -._73ku ._73jw, -._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, -._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { - border: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -.mQuestionsPollResultsBar .shaded, ._1027._13sm { - border: 1px solid #fff !important; -} - -._3gka { - border: 1px dashed rgba(255, 255, 255, 0.3) !important; -} - -._4o58::after, .acr, ._t21, ._2bdb, -.acw, .aclb, ._4qax, ._5h8f { - border-color: rgba(255, 255, 255, 0.3) !important; -} - -._15ks ._15kl::before { - border-left: 1px solid transparent !important; -} - -._56bf, .touch .btn { - border-radius: 0 !important; - border: 0 !important; -} - -._2cis { - border-left: 10px solid #303030 !important; - border-right: 10px solid #303030 !important; -} - -._2cir.selected, ._42rv, ._5zma, ._2x2s { - border-bottom: 3px solid #fff !important; -} - -._1ss6 { - border-left: 2px solid #fff !important; -} - -._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { - border-bottom: 1px solid #fff !important; -} - -._34ee { - background: rgba(137, 137, 137, 0.35) !important; - color: #fff !important; -} - -._34em ._34ee { - background: #5d86dd !important; - color: #fff !important; -} - -._5as0, ._5cni, ._5as2 { - background: #303030 !important; -} - -*, *::after, *::before { - text-shadow: none !important; - box-shadow: none !important; -} - -[data-sigil=m_login_upsell], -[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { - display: none !important; -} - -::-webkit-input-placeholder { - color: #fff !important; -} - -:-moz-placeholder { - color: #fff !important; -} - -::-moz-placeholder { - color: #fff !important; -} - -:-ms-input-placeholder { - color: #fff !important; -} - -.excessItem { - outline: rgba(255, 255, 255, 0.3) !important; -} - -._3m1m { - background: linear-gradient(transparent, #303030) !important; -} - -@-webkit-keyframes highlightFade { - 0%, 50% { - background: rgba(137, 137, 137, 0.35); - } - 100% { - background: #303030; - } -} -@-moz-keyframes highlightFade { - 0%, 50% { - background: rgba(137, 137, 137, 0.35); - } - 100% { - background: #303030; - } -} -@keyframes highlightFade { - 0%, 50% { - background: rgba(137, 137, 137, 0.35); - } - 100% { - background: #303030; - } -} -@-webkit-keyframes chatHighlightAnimation { - 0%, 100% { - background: #303030; - } - 50% { - background: rgba(137, 137, 137, 0.35); - } -} -@-moz-keyframes chatHighlightAnimation { - 0%, 100% { - background: #303030; - } - 50% { - background: rgba(137, 137, 137, 0.35); - } -} -@keyframes chatHighlightAnimation { - 0%, 100% { - background: #303030; - } - 50% { - background: rgba(137, 137, 137, 0.35); - } -} -._50uu { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; -} - -._50uw { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; -} - -._15km ._15ko::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15ko._77la::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%235d86dd" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kq::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kr::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -.story_body_container i.img[data-sigil*=story-popup-context] { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23fff" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} diff --git a/app/src/main/assets/css/themes/material_dark.scss b/app/src/main/assets/css/themes/material_dark.scss deleted file mode 100644 index 18b8b461..00000000 --- a/app/src/main/assets/css/themes/material_dark.scss +++ /dev/null @@ -1,10 +0,0 @@ -$text: #fff; -$accent_text: #fff; -$link: #5d86dd; -$accent: #5d86dd; -$background: #303030; -$bg_transparent: $background; -$card: #353535; -$tint: rgba(#fff, 0.2); - -@import "../core/main"; diff --git a/app/src/main/assets/css/themes/material_glass.css b/app/src/main/assets/css/themes/material_glass.css deleted file mode 100644 index 3bf9530f..00000000 --- a/app/src/main/assets/css/themes/material_glass.css +++ /dev/null @@ -1,338 +0,0 @@ -[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, -._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, -.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, -._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, -._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, -._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, -._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, -._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, -._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, -._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, -._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, -._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, -textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, -._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, -._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, -._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, -._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, -._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, -div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, -a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, -.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, -._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, -._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, -h1, h2, h3, h4, h5, h6 { - color: #fff !important; -} - -strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { - color: #5d86dd !important; -} - -._42nf ._42ng { - color: transparent !important; -} - -p > a, .msg span > a { - color: #5d86dd !important; -} - -#viewport { - background: rgba(0, 0, 0, 0.1) !important; -} - -body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, -._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, -._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, -._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, -._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, -._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, -.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, -.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, -._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, -._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, -._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, -._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, -._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, -._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, -.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, -._ue6, ._hdn._hdn, -._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, -._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, -._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, -._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, -._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { - background: transparent !important; -} - -._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { - background: rgba(0, 0, 0, 0.25) !important; -} - -.aclb { - background: rgba(255, 255, 255, 0.15) !important; -} - -._cv_, ._2sq8 { - background-color: transparent !important; -} - -#page, ._8l7, ._-j8, ._-j9, ._6o5v { - background: transparent !important; -} - -.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, -.mentions-suggest, ._1xoz, ._1xow { - background: black !important; -} - -._403n, ._14v5 ._14v8, ._1-kc { - background: #595959 !important; -} - -button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, -._590n, ._4g8h, ._2cpp, ._58a0.touched:after, -.timeline .timelinePublisher, .touched, .sharerAttachment, -.item a.primary.touched .primarywrap, ._38nq, ._537a, -._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, -.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, -._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, -._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, -._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, -._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, -#addMembersTypeahead .mToken.mTokenWeakReference, -.acbk { - background: rgba(89, 89, 89, 0.35) !important; -} - -.mQuestionsPollResultsBar .shaded { - background: #5d86dd !important; -} - -._220g, ._1_y8:after, ._6pk6, -._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, -._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { - background: rgba(255, 255, 255, 0.3) !important; -} - -button ._v89 ._54k8._1fl1 { - background: #5d86dd !important; -} - -._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, -._5j35::after, ._2k4b, ._3to7, ._4nw8 { - border-left: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._4_d1, ._5cni { - border-right: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, -._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, -._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, -._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, -._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { - border-top: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, -._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, -._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, -._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, -.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, -._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, -.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, -._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, -._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, -._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, -._5fjw > :first-child { - border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, -._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { - border-top: 1px solid rgba(255, 255, 255, 0.3) !important; - border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, -.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, -._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, -._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, -._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, -._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, -.home-notification .touchable.touched, ._6beo ._6ber, -._73ku ._73jw, -._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, -._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { - border: 1px solid rgba(255, 255, 255, 0.3) !important; -} - -.mQuestionsPollResultsBar .shaded, ._1027._13sm { - border: 1px solid #fff !important; -} - -._3gka { - border: 1px dashed rgba(255, 255, 255, 0.3) !important; -} - -._4o58::after, .acr, ._t21, ._2bdb, -.acw, .aclb, ._4qax, ._5h8f { - border-color: rgba(255, 255, 255, 0.3) !important; -} - -._15ks ._15kl::before { - border-left: 1px solid transparent !important; -} - -._56bf, .touch .btn { - border-radius: 0 !important; - border: 0 !important; -} - -._2cis { - border-left: 10px solid transparent !important; - border-right: 10px solid transparent !important; -} - -._2cir.selected, ._42rv, ._5zma, ._2x2s { - border-bottom: 3px solid #fff !important; -} - -._1ss6 { - border-left: 2px solid #fff !important; -} - -._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { - border-bottom: 1px solid #fff !important; -} - -._34ee { - background: rgba(89, 89, 89, 0.35) !important; - color: #fff !important; -} - -._34em ._34ee { - background: #5d86dd !important; - color: #fff !important; -} - -._5as0, ._5cni, ._5as2 { - background: black !important; -} - -*, *::after, *::before { - text-shadow: none !important; - box-shadow: none !important; -} - -[data-sigil=m_login_upsell], -[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { - display: none !important; -} - -::-webkit-input-placeholder { - color: #fff !important; -} - -:-moz-placeholder { - color: #fff !important; -} - -::-moz-placeholder { - color: #fff !important; -} - -:-ms-input-placeholder { - color: #fff !important; -} - -.excessItem { - outline: rgba(255, 255, 255, 0.3) !important; -} - -._3m1m { - background: linear-gradient(transparent, black) !important; -} - -@-webkit-keyframes highlightFade { - 0%, 50% { - background: rgba(89, 89, 89, 0.35); - } - 100% { - background: transparent; - } -} -@-moz-keyframes highlightFade { - 0%, 50% { - background: rgba(89, 89, 89, 0.35); - } - 100% { - background: transparent; - } -} -@keyframes highlightFade { - 0%, 50% { - background: rgba(89, 89, 89, 0.35); - } - 100% { - background: transparent; - } -} -@-webkit-keyframes chatHighlightAnimation { - 0%, 100% { - background: transparent; - } - 50% { - background: rgba(89, 89, 89, 0.35); - } -} -@-moz-keyframes chatHighlightAnimation { - 0%, 100% { - background: transparent; - } - 50% { - background: rgba(89, 89, 89, 0.35); - } -} -@keyframes chatHighlightAnimation { - 0%, 100% { - background: transparent; - } - 50% { - background: rgba(89, 89, 89, 0.35); - } -} -._50uu { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; -} - -._50uw { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; -} - -._15km ._15ko::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15ko._77la::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%235d86dd" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kq::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kr::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -.story_body_container i.img[data-sigil*=story-popup-context] { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23fff" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} diff --git a/app/src/main/assets/css/themes/material_glass.scss b/app/src/main/assets/css/themes/material_glass.scss deleted file mode 100644 index 0c61a38c..00000000 --- a/app/src/main/assets/css/themes/material_glass.scss +++ /dev/null @@ -1,10 +0,0 @@ -$text: #fff; -$accent_text: #fff; -$link: #5d86dd; -$accent: #5d86dd; -$background: rgba(#000, 0.1); -$bg_transparent: transparent; -$card: rgba(#000, 0.25); -$tint: rgba(#fff, 0.15); - -@import "../core/main"; diff --git a/app/src/main/assets/css/themes/material_light.css b/app/src/main/assets/css/themes/material_light.css deleted file mode 100644 index c00dd12f..00000000 --- a/app/src/main/assets/css/themes/material_light.css +++ /dev/null @@ -1,338 +0,0 @@ -[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, -._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, -.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, -._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, -._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, -._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, -._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, -._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, -._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, -._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, -._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, -._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, -textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, -._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, -._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, -._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, -._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, -._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, -div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, -a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, -.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, -._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, -._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, -h1, h2, h3, h4, h5, h6 { - color: #000 !important; -} - -strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { - color: #3b5998 !important; -} - -._42nf ._42ng { - color: transparent !important; -} - -p > a, .msg span > a { - color: #3b5998 !important; -} - -#viewport { - background: #fafafa !important; -} - -body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, -._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, -._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, -._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, -._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, -._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, -.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, -.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, -._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, -._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, -._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, -._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, -._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, -._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, -.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, -._ue6, ._hdn._hdn, -._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, -._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, -._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, -._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, -._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { - background: #fafafa !important; -} - -._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { - background: #fff !important; -} - -.aclb { - background: #ddd !important; -} - -._cv_, ._2sq8 { - background-color: #fafafa !important; -} - -#page, ._8l7, ._-j8, ._-j9, ._6o5v { - background: transparent !important; -} - -.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, -.mentions-suggest, ._1xoz, ._1xow { - background: #fafafa !important; -} - -._403n, ._14v5 ._14v8, ._1-kc { - background: #e6e6e6 !important; -} - -button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, -._590n, ._4g8h, ._2cpp, ._58a0.touched:after, -.timeline .timelinePublisher, .touched, .sharerAttachment, -.item a.primary.touched .primarywrap, ._38nq, ._537a, -._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, -.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, -._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, -._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, -._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, -._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, -#addMembersTypeahead .mToken.mTokenWeakReference, -.acbk { - background: rgba(230, 230, 230, 0.35) !important; -} - -.mQuestionsPollResultsBar .shaded { - background: #3b5998 !important; -} - -._220g, ._1_y8:after, ._6pk6, -._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, -._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { - background: rgba(0, 0, 0, 0.3) !important; -} - -button ._v89 ._54k8._1fl1 { - background: #3b5998 !important; -} - -._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, -._5j35::after, ._2k4b, ._3to7, ._4nw8 { - border-left: 1px solid rgba(0, 0, 0, 0.3) !important; -} - -._4_d1, ._5cni { - border-right: 1px solid rgba(0, 0, 0, 0.3) !important; -} - -._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, -._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, -._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, -._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, -._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { - border-top: 1px solid rgba(0, 0, 0, 0.3) !important; -} - -._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, -._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, -._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, -._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, -.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, -._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, -.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, -._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, -._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, -._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, -._5fjw > :first-child { - border-bottom: 1px solid rgba(0, 0, 0, 0.3) !important; -} - -.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, -._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { - border-top: 1px solid rgba(0, 0, 0, 0.3) !important; - border-bottom: 1px solid rgba(0, 0, 0, 0.3) !important; -} - -._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, -.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, -._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, -._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, -._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, -._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, -.home-notification .touchable.touched, ._6beo ._6ber, -._73ku ._73jw, -._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, -._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { - border: 1px solid rgba(0, 0, 0, 0.3) !important; -} - -.mQuestionsPollResultsBar .shaded, ._1027._13sm { - border: 1px solid #000 !important; -} - -._3gka { - border: 1px dashed rgba(0, 0, 0, 0.3) !important; -} - -._4o58::after, .acr, ._t21, ._2bdb, -.acw, .aclb, ._4qax, ._5h8f { - border-color: rgba(0, 0, 0, 0.3) !important; -} - -._15ks ._15kl::before { - border-left: 1px solid transparent !important; -} - -._56bf, .touch .btn { - border-radius: 0 !important; - border: 0 !important; -} - -._2cis { - border-left: 10px solid #fafafa !important; - border-right: 10px solid #fafafa !important; -} - -._2cir.selected, ._42rv, ._5zma, ._2x2s { - border-bottom: 3px solid #000 !important; -} - -._1ss6 { - border-left: 2px solid #000 !important; -} - -._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { - border-bottom: 1px solid #000 !important; -} - -._34ee { - background: rgba(230, 230, 230, 0.35) !important; - color: #000 !important; -} - -._34em ._34ee { - background: #3b5998 !important; - color: #fff !important; -} - -._5as0, ._5cni, ._5as2 { - background: #fafafa !important; -} - -*, *::after, *::before { - text-shadow: none !important; - box-shadow: none !important; -} - -[data-sigil=m_login_upsell], -[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { - display: none !important; -} - -::-webkit-input-placeholder { - color: #000 !important; -} - -:-moz-placeholder { - color: #000 !important; -} - -::-moz-placeholder { - color: #000 !important; -} - -:-ms-input-placeholder { - color: #000 !important; -} - -.excessItem { - outline: rgba(0, 0, 0, 0.3) !important; -} - -._3m1m { - background: linear-gradient(transparent, #fafafa) !important; -} - -@-webkit-keyframes highlightFade { - 0%, 50% { - background: rgba(230, 230, 230, 0.35); - } - 100% { - background: #fafafa; - } -} -@-moz-keyframes highlightFade { - 0%, 50% { - background: rgba(230, 230, 230, 0.35); - } - 100% { - background: #fafafa; - } -} -@keyframes highlightFade { - 0%, 50% { - background: rgba(230, 230, 230, 0.35); - } - 100% { - background: #fafafa; - } -} -@-webkit-keyframes chatHighlightAnimation { - 0%, 100% { - background: #fafafa; - } - 50% { - background: rgba(230, 230, 230, 0.35); - } -} -@-moz-keyframes chatHighlightAnimation { - 0%, 100% { - background: #fafafa; - } - 50% { - background: rgba(230, 230, 230, 0.35); - } -} -@keyframes chatHighlightAnimation { - 0%, 100% { - background: #fafafa; - } - 50% { - background: rgba(230, 230, 230, 0.35); - } -} -._50uu { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; -} - -._50uw { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; -} - -._15km ._15ko::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15ko._77la::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%233b5998" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kq::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -._15km ._15kr::before { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} - -.story_body_container i.img[data-sigil*=story-popup-context] { - background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23000" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; - background-position: center !important; -} diff --git a/app/src/main/assets/css/themes/material_light.scss b/app/src/main/assets/css/themes/material_light.scss deleted file mode 100644 index 7ec58463..00000000 --- a/app/src/main/assets/css/themes/material_light.scss +++ /dev/null @@ -1,15 +0,0 @@ -$text: #000; -$accent_text: #fff; -$link: #3b5998; -$accent: #3b5998; -$background: #fafafa; -// this is actually the inverse of material light (bg should be gray, cards should be white), -// but it looks better than the alternative -$background2: rgba(darken($background, 8%), 0.35); - -$bg_transparent: $background; - -$card: #fff; -$tint: #ddd; - -@import "../core/main"; \ No newline at end of file diff --git a/app/src/main/assets/js/click_a.coffee b/app/src/main/assets/js/click_a.coffee deleted file mode 100644 index e032b4ad..00000000 --- a/app/src/main/assets/js/click_a.coffee +++ /dev/null @@ -1,48 +0,0 @@ -prevented = false - -_frostAClick = (e) -> - - ### - # Commonality; check for valid target - ### - element = e.target or e.srcElement - if element.tagName != "A" - element = element.parentNode - # Notifications is two layers under - if element.tagName != "A" - element = element.parentNode - if element.tagName == "A" - if !prevented - url = element.getAttribute("href") - console.log "Click Intercept #{url}" - # if frost is injected, check if loading the url through an overlay works - if Frost?.loadUrl(url) == true - e.stopPropagation() - e.preventDefault() - else - console.log "Click Intercept Prevented" - return - -### -# On top of the click event, we must stop it for long presses -# Since that will conflict with the context menu -# Note that we only override it on conditions where the context menu -# Will occur -### - -_frostPreventClick = -> - console.log "Click prevented" - prevented = true - return - -document.addEventListener "click", _frostAClick, true -clickTimeout = undefined -document.addEventListener "touchstart", ((e) -> - clickTimeout = setTimeout(_frostPreventClick, 400) - return -), true -document.addEventListener "touchend", ((e) -> - prevented = false - clearTimeout clickTimeout - return -), true diff --git a/app/src/main/assets/js/click_a.js b/app/src/main/assets/js/click_a.js deleted file mode 100644 index e3ea7f31..00000000 --- a/app/src/main/assets/js/click_a.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; - -(function () { - - /* - * On top of the click event, we must stop it for long presses - * Since that will conflict with the context menu - * Note that we only override it on conditions where the context menu - * Will occur - */ - var _frostAClick, _frostPreventClick, clickTimeout, prevented; - - prevented = false; - - _frostAClick = function _frostAClick(e) { - /* - * Commonality; check for valid target - */ - var element, url; - element = e.target || e.srcElement; - if (element.tagName !== "A") { - element = element.parentNode; - } - // Notifications is two layers under - if (element.tagName !== "A") { - element = element.parentNode; - } - if (element.tagName === "A") { - if (!prevented) { - url = element.getAttribute("href"); - console.log("Click Intercept " + url); - // if frost is injected, check if loading the url through an overlay works - if ((typeof Frost !== "undefined" && Frost !== null ? Frost.loadUrl(url) : void 0) === true) { - e.stopPropagation(); - e.preventDefault(); - } - } else { - console.log("Click Intercept Prevented"); - } - } - }; - - _frostPreventClick = function _frostPreventClick() { - console.log("Click prevented"); - prevented = true; - }; - - document.addEventListener("click", _frostAClick, true); - - clickTimeout = void 0; - - document.addEventListener("touchstart", function (e) { - clickTimeout = setTimeout(_frostPreventClick, 400); - }, true); - - document.addEventListener("touchend", function (e) { - prevented = false; - clearTimeout(clickTimeout); - }, true); -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/click_debugger.coffee b/app/src/main/assets/js/click_debugger.coffee deleted file mode 100644 index 057bb207..00000000 --- a/app/src/main/assets/js/click_debugger.coffee +++ /dev/null @@ -1,14 +0,0 @@ -# for desktop only - -_frostAContext = (e) -> - - ### - # Commonality; check for valid target - ### - element = e.target or e.currentTarget or e.srcElement - if !element - return - console.log "Clicked element: #{element.tagName} #{element.className}" - return - -document.addEventListener 'contextmenu', _frostAContext, true diff --git a/app/src/main/assets/js/click_debugger.js b/app/src/main/assets/js/click_debugger.js deleted file mode 100644 index 71db586a..00000000 --- a/app/src/main/assets/js/click_debugger.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -(function () { - // for desktop only - var _frostAContext; - - _frostAContext = function _frostAContext(e) { - /* - * Commonality; check for valid target - */ - var element; - element = e.target || e.currentTarget || e.srcElement; - if (!element) { - return; - } - console.log('Clicked element: ' + element.tagName + ' ' + element.className); - }; - - document.addEventListener('contextmenu', _frostAContext, true); -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/context_a.coffee b/app/src/main/assets/js/context_a.coffee deleted file mode 100644 index 0dca1b7f..00000000 --- a/app/src/main/assets/js/context_a.coffee +++ /dev/null @@ -1,59 +0,0 @@ -# context menu for links -# largely mimics click_a.js -# we will also bind a listener here to notify the activity not to deal with viewpager scrolls -longClick = false - -_frostAContext = (e) -> - Frost?.longClick true - longClick = true - - ### - # Commonality; check for valid target - ### - - element = e.target or e.currentTarget or e.srcElement - if !element - return - if element.tagName != "A" - element = element.parentNode - #Notifications is two layers under - if element.tagName != "A" - element = element.parentNode - if element.tagName == "A" and element.getAttribute("href") != "#" - url = element.getAttribute("href") - if !url - return - text = element.parentNode.innerText - # check if image item exists, first in children and then in parent - image = element.querySelector("[style*=\"background-image: url(\"]") - if !image - image = element.parentNode.querySelector("[style*=\"background-image: url(\"]") - if image - imageUrl = window.getComputedStyle(image, null).backgroundImage.trim().slice(4, -1) - console.log "Context image: #{imageUrl}" - Frost?.loadImage imageUrl, text - e.stopPropagation() - e.preventDefault() - return - # check if true img exists - img = element.querySelector("img[src*=scontent]") - if img - imgUrl = img.src - console.log "Context img #{imgUrl}" - Frost?.loadImage imgUrl, text - e.stopPropagation() - e.preventDefault() - return - console.log "Context Content #{url} #{text}" - Frost?.contextMenu url, text - e.stopPropagation() - e.preventDefault() - return - -document.addEventListener "contextmenu", _frostAContext, true -document.addEventListener "touchend", ((e) -> - if longClick - Frost?.longClick false - longClick = false - return -), true diff --git a/app/src/main/assets/js/context_a.js b/app/src/main/assets/js/context_a.js deleted file mode 100644 index b39a6542..00000000 --- a/app/src/main/assets/js/context_a.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; - -(function () { - // context menu for links - // largely mimics click_a.js - // we will also bind a listener here to notify the activity not to deal with viewpager scrolls - var _frostAContext, longClick; - - longClick = false; - - _frostAContext = function _frostAContext(e) { - /* - * Commonality; check for valid target - */ - var element, image, imageUrl, img, imgUrl, text, url; - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.longClick(true); - } - longClick = true; - element = e.target || e.currentTarget || e.srcElement; - if (!element) { - return; - } - if (element.tagName !== "A") { - element = element.parentNode; - } - //Notifications is two layers under - if (element.tagName !== "A") { - element = element.parentNode; - } - if (element.tagName === "A" && element.getAttribute("href") !== "#") { - url = element.getAttribute("href"); - if (!url) { - return; - } - text = element.parentNode.innerText; - // check if image item exists, first in children and then in parent - image = element.querySelector("[style*=\"background-image: url(\"]"); - if (!image) { - image = element.parentNode.querySelector("[style*=\"background-image: url(\"]"); - } - if (image) { - imageUrl = window.getComputedStyle(image, null).backgroundImage.trim().slice(4, -1); - console.log("Context image: " + imageUrl); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.loadImage(imageUrl, text); - } - e.stopPropagation(); - e.preventDefault(); - return; - } - // check if true img exists - img = element.querySelector("img[src*=scontent]"); - if (img) { - imgUrl = img.src; - console.log("Context img " + imgUrl); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.loadImage(imgUrl, text); - } - e.stopPropagation(); - e.preventDefault(); - return; - } - console.log("Context Content " + url + " " + text); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.contextMenu(url, text); - } - e.stopPropagation(); - e.preventDefault(); - } - }; - - document.addEventListener("contextmenu", _frostAContext, true); - - document.addEventListener("touchend", function (e) { - if (longClick) { - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.longClick(false); - } - longClick = false; - } - }, true); -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/document_watcher.coffee b/app/src/main/assets/js/document_watcher.coffee deleted file mode 100644 index 11cf7d53..00000000 --- a/app/src/main/assets/js/document_watcher.coffee +++ /dev/null @@ -1,24 +0,0 @@ -# emit key once half the viewport is covered - -isReady = -> - if not (document?.body?) - return false - return document.body.scrollHeight > innerHeight + 100 - -if isReady() - console.log("Already ready") - Frost?.isReady() - return - -console.log("Injected document watcher") - -observer = new MutationObserver(() -> - if isReady() - observer.disconnect() - Frost?.isReady() - console.log("Documented surpassed height in #{performance.now()}") -) - -observer.observe document, - childList: true - subtree: true \ No newline at end of file diff --git a/app/src/main/assets/js/document_watcher.js b/app/src/main/assets/js/document_watcher.js deleted file mode 100644 index 4613dc87..00000000 --- a/app/src/main/assets/js/document_watcher.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; - -(function () { - // emit key once half the viewport is covered - var isReady, observer; - - isReady = function isReady() { - if (!((typeof document !== "undefined" && document !== null ? document.body : void 0) != null)) { - return false; - } - return document.body.scrollHeight > innerHeight + 100; - }; - - if (isReady()) { - console.log("Already ready"); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.isReady(); - } - return; - } - - console.log("Injected document watcher"); - - observer = new MutationObserver(function () { - if (isReady()) { - observer.disconnect(); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.isReady(); - } - return console.log("Documented surpassed height in " + performance.now()); - } - }); - - observer.observe(document, { - childList: true, - subtree: true - }); -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/header_badges.coffee b/app/src/main/assets/js/header_badges.coffee deleted file mode 100644 index e9702751..00000000 --- a/app/src/main/assets/js/header_badges.coffee +++ /dev/null @@ -1,4 +0,0 @@ -# bases the header contents if it exists -header = document.getElementById("mJewelNav") -if header != null - Frost?.handleHeader header.outerHTML diff --git a/app/src/main/assets/js/header_badges.js b/app/src/main/assets/js/header_badges.js deleted file mode 100644 index 13447229..00000000 --- a/app/src/main/assets/js/header_badges.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; - -(function () { - // bases the header contents if it exists - var header; - - header = document.getElementById("mJewelNav"); - - if (header !== null) { - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.handleHeader(header.outerHTML); - } - } -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/header_hider.coffee b/app/src/main/assets/js/header_hider.coffee deleted file mode 100644 index 40510c79..00000000 --- a/app/src/main/assets/js/header_hider.coffee +++ /dev/null @@ -1,11 +0,0 @@ -header = document.querySelector('#header') - -if !header - return - -jewel = header.querySelector('#mJewelNav') - -if !jewel - return - -header.style.display = 'none' \ No newline at end of file diff --git a/app/src/main/assets/js/header_hider.js b/app/src/main/assets/js/header_hider.js deleted file mode 100644 index f29887ee..00000000 --- a/app/src/main/assets/js/header_hider.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -(function () { - var header, jewel; - - header = document.querySelector('#header'); - - if (!header) { - return; - } - - jewel = header.querySelector('#mJewelNav'); - - if (!jewel) { - return; - } - - header.style.display = 'none'; -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/media.coffee b/app/src/main/assets/js/media.coffee deleted file mode 100644 index e9b20ec8..00000000 --- a/app/src/main/assets/js/media.coffee +++ /dev/null @@ -1,29 +0,0 @@ -# we will handle media events -_frostMediaClick = (e) -> - element = e.target or e.srcElement - if !element?.dataset.sigil?.toLowerCase().includes("inlinevideo") - return - - i = 0 - while !element.hasAttribute("data-store") - if ++i > 2 - return - element = element.parentNode - - try - dataStore = JSON.parse(element.dataset.store) - catch e - return - - url = dataStore.src - - if !url || !url.startsWith("http") - return - - console.log "Inline video #{url}" - if Frost?.loadVideo url, dataStore.animatedGifVideo - e.stopPropagation() - e.preventDefault() - return - -document.addEventListener "click", _frostMediaClick, true diff --git a/app/src/main/assets/js/media.js b/app/src/main/assets/js/media.js deleted file mode 100644 index e8bf8a72..00000000 --- a/app/src/main/assets/js/media.js +++ /dev/null @@ -1,38 +0,0 @@ -// Generated by CoffeeScript 2.3.2 -(function() { - // we will handle media events - var _frostMediaClick; - - _frostMediaClick = function(e) { - var dataStore, element, i, ref, url; - element = e.target || e.srcElement; - if (!(element != null ? (ref = element.dataset.sigil) != null ? ref.toLowerCase().includes("inlinevideo") : void 0 : void 0)) { - return; - } - i = 0; - while (!element.hasAttribute("data-store")) { - if (++i > 2) { - return; - } - element = element.parentNode; - } - try { - dataStore = JSON.parse(element.dataset.store); - } catch (error) { - e = error; - return; - } - url = dataStore.src; - if (!url || !url.startsWith("http")) { - return; - } - console.log(`Inline video ${url}`); - if (typeof Frost !== "undefined" && Frost !== null ? Frost.loadVideo(url, dataStore.animatedGifVideo) : void 0) { - e.stopPropagation(); - e.preventDefault(); - } - }; - - document.addEventListener("click", _frostMediaClick, true); - -}).call(this); diff --git a/app/src/main/assets/js/menu.coffee b/app/src/main/assets/js/menu.coffee deleted file mode 100644 index ebc7a879..00000000 --- a/app/src/main/assets/js/menu.coffee +++ /dev/null @@ -1,52 +0,0 @@ -# click menu and move contents to main view -viewport = document.querySelector("#viewport") -root = document.querySelector("#root") -menuA = document.querySelector("#bookmarks_jewel").querySelector("a") -if !viewport - console.log "Menu.js: viewport is null" - Frost?.emit 0 - return -if !root - console.log "Menu.js: root is null" - Frost?.emit 0 - return -if !menuA - console.log "Menu.js: jewel is null" - Frost?.emit 0 - return - -y = new MutationObserver(() -> - viewport.removeAttribute "style" - root.removeAttribute "style" - return -) - -y.observe viewport, attributes: true -y.observe root, attributes: true - -x = new MutationObserver(() -> - menu = document.querySelector(".mSideMenu") - if menu != null - x.disconnect() - console.log "Found side menu" - while root.firstChild - root.removeChild root.firstChild - while menu.childNodes.length - console.log "append" - viewport.appendChild menu.childNodes[0] - Frost?.emit 0 - setTimeout (-> - y.disconnect() - console.log "Unhook styler" - return - ), 500 - return -) -jewel = document.querySelector("#mJewelNav") -if !jewel - console.log "Menu.js: jewel is null" -x.observe jewel, - childList: true - subtree: true - -menuA.click() diff --git a/app/src/main/assets/js/menu.js b/app/src/main/assets/js/menu.js deleted file mode 100644 index 5464865c..00000000 --- a/app/src/main/assets/js/menu.js +++ /dev/null @@ -1,85 +0,0 @@ -// Generated by CoffeeScript 2.3.2 -(function() { - // click menu and move contents to main view - var jewel, menuA, root, viewport, x, y; - - viewport = document.querySelector("#viewport"); - - root = document.querySelector("#root"); - - menuA = document.querySelector("#bookmarks_jewel").querySelector("a"); - - if (!viewport) { - console.log("Menu.js: viewport is null"); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.emit(0); - } - return; - } - - if (!root) { - console.log("Menu.js: root is null"); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.emit(0); - } - return; - } - - if (!menuA) { - console.log("Menu.js: jewel is null"); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.emit(0); - } - return; - } - - y = new MutationObserver(function() { - viewport.removeAttribute("style"); - root.removeAttribute("style"); - }); - - y.observe(viewport, { - attributes: true - }); - - y.observe(root, { - attributes: true - }); - - x = new MutationObserver(function() { - var menu; - menu = document.querySelector(".mSideMenu"); - if (menu !== null) { - x.disconnect(); - console.log("Found side menu"); - while (root.firstChild) { - root.removeChild(root.firstChild); - } - while (menu.childNodes.length) { - console.log("append"); - viewport.appendChild(menu.childNodes[0]); - } - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.emit(0); - } - setTimeout((function() { - y.disconnect(); - console.log("Unhook styler"); - }), 500); - } - }); - - jewel = document.querySelector("#mJewelNav"); - - if (!jewel) { - console.log("Menu.js: jewel is null"); - } - - x.observe(jewel, { - childList: true, - subtree: true - }); - - menuA.click(); - -}).call(this); diff --git a/app/src/main/assets/js/menu_debug.coffee b/app/src/main/assets/js/menu_debug.coffee deleted file mode 100644 index 54b265f4..00000000 --- a/app/src/main/assets/js/menu_debug.coffee +++ /dev/null @@ -1,42 +0,0 @@ -# click menu and move contents to main view -viewport = document.querySelector("#viewport") -root = document.querySelector("#root") -if !viewport - console.log "Menu.js: viewport is null" -if !root - console.log "Menu.js: root is null" -y = new MutationObserver((mutations) -> - viewport.removeAttribute "style" - root.removeAttribute "style" - return -) -y.observe viewport, attributes: true -y.observe root, attributes: true -x = new MutationObserver((mutations) -> - menu = document.querySelector(".mSideMenu") - if menu != null - x.disconnect() - console.log "Found side menu" - while root.firstChild - root.removeChild root.firstChild - while menu.childNodes.length - console.log "append" - viewport.appendChild menu.childNodes[0] - Frost?.handleHtml viewport.outerHTML - setTimeout (-> - y.disconnect() - console.log "Unhook styler" - return - ), 500 - return -) -jewel = document.querySelector("#mJewelNav") -if !jewel - console.log "Menu.js: jewel is null" -x.observe jewel, - childList: true - subtree: true -menuA = document.querySelector("#bookmarks_jewel").querySelector("a") -if !menuA - console.log "Menu.js: jewel is null" -menuA.click() diff --git a/app/src/main/assets/js/menu_debug.js b/app/src/main/assets/js/menu_debug.js deleted file mode 100644 index 7ecbf276..00000000 --- a/app/src/main/assets/js/menu_debug.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; - -(function () { - // click menu and move contents to main view - var jewel, menuA, root, viewport, x, y; - - viewport = document.querySelector("#viewport"); - - root = document.querySelector("#root"); - - if (!viewport) { - console.log("Menu.js: viewport is null"); - } - - if (!root) { - console.log("Menu.js: root is null"); - } - - y = new MutationObserver(function (mutations) { - viewport.removeAttribute("style"); - root.removeAttribute("style"); - }); - - y.observe(viewport, { - attributes: true - }); - - y.observe(root, { - attributes: true - }); - - x = new MutationObserver(function (mutations) { - var menu; - menu = document.querySelector(".mSideMenu"); - if (menu !== null) { - x.disconnect(); - console.log("Found side menu"); - while (root.firstChild) { - root.removeChild(root.firstChild); - } - while (menu.childNodes.length) { - console.log("append"); - viewport.appendChild(menu.childNodes[0]); - } - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.handleHtml(viewport.outerHTML); - } - setTimeout(function () { - y.disconnect(); - console.log("Unhook styler"); - }, 500); - } - }); - - jewel = document.querySelector("#mJewelNav"); - - if (!jewel) { - console.log("Menu.js: jewel is null"); - } - - x.observe(jewel, { - childList: true, - subtree: true - }); - - menuA = document.querySelector("#bookmarks_jewel").querySelector("a"); - - if (!menuA) { - console.log("Menu.js: jewel is null"); - } - - menuA.click(); -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/notif_msg.coffee b/app/src/main/assets/js/notif_msg.coffee deleted file mode 100644 index 1c3f8e38..00000000 --- a/app/src/main/assets/js/notif_msg.coffee +++ /dev/null @@ -1,22 +0,0 @@ -# binds callbacks to an invisible webview to take in the search events -finished = false -x = new MutationObserver((mutations) -> - _f_thread = document.querySelector("#threadlist_rows") - if !_f_thread - return - console.log "Found message threads #{_f_thread.outerHTML}" - Frost?.handleHtml _f_thread.outerHTML - finished = true - x.disconnect() - return -) -x.observe document, - childList: true - subtree: true -setTimeout (-> - if !finished - finished = true - console.log "Message thread timeout cancellation" - Frost?.handleHtml "" - return -), 20000 diff --git a/app/src/main/assets/js/notif_msg.js b/app/src/main/assets/js/notif_msg.js deleted file mode 100644 index 134ad4f0..00000000 --- a/app/src/main/assets/js/notif_msg.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; - -(function () { - // binds callbacks to an invisible webview to take in the search events - var finished, x; - - finished = false; - - x = new MutationObserver(function (mutations) { - var _f_thread; - _f_thread = document.querySelector("#threadlist_rows"); - if (!_f_thread) { - return; - } - console.log("Found message threads " + _f_thread.outerHTML); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.handleHtml(_f_thread.outerHTML); - } - finished = true; - x.disconnect(); - }); - - x.observe(document, { - childList: true, - subtree: true - }); - - setTimeout(function () { - if (!finished) { - finished = true; - console.log("Message thread timeout cancellation"); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.handleHtml(""); - } - } - }, 20000); -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/js/textarea_listener.coffee b/app/src/main/assets/js/textarea_listener.coffee deleted file mode 100644 index 950f663e..00000000 --- a/app/src/main/assets/js/textarea_listener.coffee +++ /dev/null @@ -1,22 +0,0 @@ -# focus listener for textareas -# since swipe to refresh is quite sensitive, we will disable it -# when we detect a user typing -# note that this extends passed having a keyboard opened, -# as a user may still be reviewing his/her post -# swiping should automatically be reset on refresh - -_frostFocus = (e) -> - element = e.target or e.srcElement - console.log "Frost focus", element.tagName - if element.tagName == "TEXTAREA" - Frost?.disableSwipeRefresh true - return - -_frostBlur = (e) -> - element = e.target or e.srcElement - console.log "Frost blur", element.tagName - Frost?.disableSwipeRefresh false - return - -document.addEventListener "focus", _frostFocus, true -document.addEventListener "blur", _frostBlur, true diff --git a/app/src/main/assets/js/textarea_listener.js b/app/src/main/assets/js/textarea_listener.js deleted file mode 100644 index 41d77159..00000000 --- a/app/src/main/assets/js/textarea_listener.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; - -(function () { - // focus listener for textareas - // since swipe to refresh is quite sensitive, we will disable it - // when we detect a user typing - // note that this extends passed having a keyboard opened, - // as a user may still be reviewing his/her post - // swiping should automatically be reset on refresh - var _frostBlur, _frostFocus; - - _frostFocus = function _frostFocus(e) { - var element; - element = e.target || e.srcElement; - console.log("Frost focus", element.tagName); - if (element.tagName === "TEXTAREA") { - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.disableSwipeRefresh(true); - } - } - }; - - _frostBlur = function _frostBlur(e) { - var element; - element = e.target || e.srcElement; - console.log("Frost blur", element.tagName); - if (typeof Frost !== "undefined" && Frost !== null) { - Frost.disableSwipeRefresh(false); - } - }; - - document.addEventListener("focus", _frostFocus, true); - - document.addEventListener("blur", _frostBlur, true); -}).call(undefined); \ No newline at end of file diff --git a/app/src/main/assets/pgl.yoyo.org.txt b/app/src/main/assets/pgl.yoyo.org.txt deleted file mode 100644 index 63d6fa41..00000000 --- a/app/src/main/assets/pgl.yoyo.org.txt +++ /dev/null @@ -1,2409 +0,0 @@ -101com.com -101order.com -123found.com -180hits.de -180searchassistant.com -1x1rank.com -207.net -247media.com -24log.com -24log.de -24pm-affiliation.com -2mdn.net -2o7.net -360yield.com -4affiliate.net -4d5.net -50websads.com -518ad.com -51yes.com -600z.com -777partner.com -777seo.com -77tracking.com -7bpeople.com -7search.com -99count.com -a-ads.com -a-counter.kiev.ua -a.0day.kiev.ua -a.aproductmsg.com -a.collective-media.net -a.consumer.net -a.mktw.net -a.sakh.com -a.ucoz.net -a.ucoz.ru -a.xanga.com -a32.g.a.yimg.com -aaddzz.com -abacho.net -abc-ads.com -absoluteclickscom.com -abz.com -ac.rnm.ca -accounts.pkr.com.invalid -acsseo.com -actionsplash.com -actualdeals.com -acuityads.com -ad-balancer.at -ad-balancer.net -ad-center.com -ad-images.suntimes.com -ad-pay.de -ad-rotator.com -ad-server.gulasidorna.se -ad-serverparc.nl -ad-souk.com -ad-space.net -ad-tech.com -ad-up.com -ad.100.tbn.ru -ad.71i.de -ad.980x.com -ad.a8.net -ad.abcnews.com -ad.abctv.com -ad.about.com -ad.aboutit.de -ad.aboutwebservices.com -ad.abum.com -ad.afy11.net -ad.allstar.cz -ad.altervista.org -ad.amgdgt.com -ad.anuntis.com -ad.auditude.com -ad.bizo.com -ad.bnmla.com -ad.bondage.com -ad.caradisiac.com -ad.centrum.cz -ad.cgi.cz -ad.choiceradio.com -ad.clix.pt -ad.cooks.com -ad.crwdcntrl.net -ad.digitallook.com -ad.directrev.com -ad.doctissimo.fr -ad.domainfactory.de -ad.e-kolay.net -ad.eurosport.com -ad.f1cd.ru -ad.flurry.com -ad.foxnetworks.com -ad.freecity.de -ad.gate24.ch -ad.globe7.com -ad.grafika.cz -ad.hbv.de -ad.hodomobile.com -ad.httpool.com -ad.hyena.cz -ad.iinfo.cz -ad.ilove.ch -ad.infoseek.com -ad.jamba.net -ad.jamster.co.uk -ad.jetsoftware.com -ad.keenspace.com -ad.leadbolt.net -ad.liveinternet.ru -ad.lupa.cz -ad.m5prod.net -ad.media-servers.net -ad.mediastorm.hu -ad.mgd.de -ad.musicmatch.com -ad.nachtagenten.de -ad.nozonedata.com -ad.nttnavi.co.jp -ad.nwt.cz -ad.onad.eu -ad.pandora.tv -ad.playground.ru -ad.preferances.com -ad.profiwin.de -ad.prv.pl -ad.rambler.ru -ad.reunion.com -ad.scanmedios.com -ad.sensismediasmart.com.au -ad.seznam.cz -ad.simgames.net -ad.slutload.com -ad.smartclip.net -ad.tbn.ru -ad.technoratimedia.com -ad.thewheelof.com -ad.top50.to -ad.turn.com -ad.tv2.no -ad.twitchguru.com -ad.usatoday.com -ad.virtual-nights.com -ad.watch.impress.co.jp -ad.wavu.hu -ad.way.cz -ad.weatherbug.com -ad.wsod.com -ad.wz.cz -ad.yadro.ru -ad.yourmedia.com -ad.zanox.com -ad0.bigmir.net -ad01.mediacorpsingapore.com -ad1.emediate.dk -ad1.emule-project.org -ad1.kde.cz -ad1.pamedia.com.au -ad2.iinfo.cz -ad2.ip.ro -ad2.linxcz.cz -ad2.lupa.cz -ad2flash.com -ad2games.com -ad3.iinfo.cz -ad3.pamedia.com.au -ad4game.com -adaction.de -adadvisor.net -adap.tv -adapt.tv -adbanner.ro -adbard.net -adblade.com -adblockanalytics.com -adboost.de.vu -adboost.net -adbooth.net -adbot.com -adbrite.com -adbroker.de -adbunker.com -adbutler.com -adbutler.de -adbuyer.com -adbuyer3.lycos.com -adcash.com -adcast.deviantart.com -adcell.de -adcenter.mdf.se -adcenter.net -adcentriconline.com -adcept.net -adclick.com -adclient.uimserv.net -adclient1.tucows.com -adcloud.net -adcomplete.com -adconion.com -adcontent.gamespy.com -adcycle.com -add.newmedia.cz -addealing.com -addesktop.com -addfreestats.com -addme.com -adecn.com -ademails.com -adengage.com -adexpose.com -adext.inkclub.com -adf.ly -adfactor.nl -adfarm.mediaplex.com -adflight.com -adforce.com -adform.com -adgardener.com -adgoto.com -adgridwork.com -adhese.be -adhese.com -adi.mainichi.co.jp -adimage.asiaone.com.sg -adimage.guardian.co.uk -adimages.been.com -adimages.carsoup.com -adimages.go.com -adimages.homestore.com -adimages.omroepzeeland.nl -adimages.sanomawsoy.fi -adimg.cnet.com -adimg.com.com -adimg.uimserv.net -adimg1.chosun.com -adimgs.sapo.pt -adimpact.com -adinjector.net -adinterax.com -adisfy.com -adition.com -adition.de -adition.net -adizio.com -adjix.com -adjug.com -adjuggler.com -adjuggler.yourdictionary.com -adjustnetwork.com -adk2.com -adk2ads.tictacti.com -adland.ru -adlantic.nl -adledge.com -adlegend.com -adlink.de -adlog.com.com -adloox.com -adlooxtracking.com -adlure.net -admagnet.net -admailtiser.com -adman.gr -adman.in.gr -adman.otenet.gr -admanagement.ch -admanager.btopenworld.com -admanager.carsoup.com -admarketplace.net -admarvel.com -admax.nexage.com -admedia.com -admedia.ro -admeld.com -admerize.be -admeta.com -admex.com -adminder.com -adminshop.com -admized.com -admob.com -admonitor.com -admotion.com.ar -adnet-media.net -adnet.asahi.com -adnet.biz -adnet.de -adnet.ru -adnet.worldreviewer.com -adnetinteractive.com -adnetwork.net -adnetworkperformance.com -adnews.maddog2000.de -adnotch.com -adnxs.com -adocean.pl -adonspot.com -adoperator.com -adorigin.com -adpepper.dk -adpepper.nl -adperium.com -adpia.vn -adplus.co.id -adplxmd.com -adprofile.net -adprojekt.pl -adq.nextag.com -adrazzi.com -adreactor.com -adremedy.com -adreporting.com -adres.internet.com -adrevolver.com -adriver.ru -adrolays.de -adrotate.de -adrotator.se -ads-click.com -ads.4tube.com -ads.5ci.lt -ads.abovetopsecret.com -ads.aceweb.net -ads.activestate.com -ads.adfox.ru -ads.administrator.de -ads.adshareware.net -ads.adultfriendfinder.com -ads.adultswim.com -ads.advance.net -ads.adverline.com -ads.affiliates.match.com -ads.ak.facebook.com.edgesuite.net -ads.allvatar.com -ads.alt.com -ads.alwayson-network.com -ads.amdmb.com -ads.amigos.com -ads.aol.co.uk -ads.aol.com -ads.apn.co.nz -ads.appsgeyser.com -ads.as4x.tmcs.net -ads.as4x.tmcs.ticketmaster.com -ads.asia1.com.sg -ads.asiafriendfinder.com -ads.ask.com -ads.aspalliance.com -ads.avazu.net -ads.batpmturner.com -ads.beenetworks.net -ads.belointeractive.com -ads.berlinonline.de -ads.betanews.com -ads.betfair.com -ads.betfair.com.au -ads.bigchurch.com -ads.bigfoot.com -ads.billiton.de -ads.bing.com -ads.bittorrent.com -ads.blog.com -ads.bloomberg.com -ads.bluelithium.com -ads.bluemountain.com -ads.bluesq.com -ads.bonniercorp.com -ads.boylesports.com -ads.brabys.com -ads.brain.pk -ads.brazzers.com -ads.bumq.com -ads.businessweek.com -ads.canalblog.com -ads.canoe.ca -ads.casinocity.com -ads.cbc.ca -ads.cc -ads.cc-dt.com -ads.centraliprom.com -ads.cgnetworks.com -ads.channel4.com -ads.cimedia.com -ads.clearchannel.com -ads.co.com -ads.com.com -ads.contactmusic.com -ads.contentabc.com -ads.contextweb.com -ads.crakmedia.com -ads.creative-serving.com -ads.creativematch.com -ads.cricbuzz.com -ads.cybersales.cz -ads.dada.it -ads.datinggold.com -ads.datingyes.com -ads.dazoot.ro -ads.deltha.hu -ads.dennisnet.co.uk -ads.desmoinesregister.com -ads.detelefoongids.nl -ads.deviantart.com -ads.digital-digest.com -ads.digitalmedianet.com -ads.digitalpoint.com -ads.directionsmag.com -ads.domeus.com -ads.eagletribune.com -ads.easy-forex.com -ads.eatinparis.com -ads.economist.com -ads.edbindex.dk -ads.egrana.com.br -ads.einmedia.com -ads.electrocelt.com -ads.elitetrader.com -ads.emirates.net.ae -ads.epltalk.com -ads.esmas.com -ads.eu.msn.com -ads.exactdrive.com -ads.expat-blog.biz -ads.expedia.com -ads.ezboard.com -ads.factorymedia.com -ads.fairfax.com.au -ads.faxo.com -ads.ferianc.com -ads.filmup.com -ads.financialcontent.com -ads.flooble.com -ads.fool.com -ads.footymad.net -ads.forbes.com -ads.forbes.net -ads.forium.de -ads.fortunecity.com -ads.fotosidan.se -ads.foxkidseurope.net -ads.foxnetworks.com -ads.foxnews.com -ads.freecity.de -ads.friendfinder.com -ads.ft.com -ads.futurenet.com -ads.gamecity.net -ads.gameforgeads.de -ads.gamershell.com -ads.gamespyid.com -ads.gamigo.de -ads.gaming-universe.de -ads.gawker.com -ads.geekswithblogs.net -ads.glispa.com -ads.globeandmail.com -ads.gmodules.com -ads.godlikeproductions.com -ads.goyk.com -ads.gplusmedia.com -ads.gradfinder.com -ads.grindinggears.com -ads.groundspeak.com -ads.gsm-exchange.com -ads.gsmexchange.com -ads.guardian.co.uk -ads.guardianunlimited.co.uk -ads.guru3d.com -ads.hardwaresecrets.com -ads.harpers.org -ads.hbv.de -ads.hearstmags.com -ads.heartlight.org -ads.heias.com -ads.hideyourarms.com -ads.hollywood.com -ads.horsehero.com -ads.horyzon-media.com -ads.iafrica.com -ads.ibest.com.br -ads.ibryte.com -ads.icq.com -ads.ign.com -ads.img.co.za -ads.imgur.com -ads.indiatimes.com -ads.infi.net -ads.internic.co.il -ads.ipowerweb.com -ads.isoftmarketing.com -ads.itv.com -ads.iwon.com -ads.jewishfriendfinder.com -ads.jiwire.com -ads.jobsite.co.uk -ads.jpost.com -ads.jubii.dk -ads.justhungry.com -ads.kaktuz.net -ads.kelbymediagroup.com -ads.kinobox.cz -ads.kinxxx.com -ads.kompass.com -ads.krawall.de -ads.lesbianpersonals.com -ads.linuxfoundation.org -ads.linuxjournal.com -ads.linuxsecurity.com -ads.livenation.com -ads.mariuana.it -ads.massinfra.nl -ads.mcafee.com -ads.mediaodyssey.com -ads.mediaturf.net -ads.medienhaus.de -ads.mgnetwork.com -ads.mmania.com -ads.moceanads.com -ads.motor-forum.nl -ads.motormedia.nl -ads.msn.com -ads.multimania.lycos.fr -ads.nationalgeographic.com -ads.ncm.com -ads.netclusive.de -ads.netmechanic.com -ads.networksolutions.com -ads.newdream.net -ads.newgrounds.com -ads.newmedia.cz -ads.newsint.co.uk -ads.newsquest.co.uk -ads.ninemsn.com.au -ads.nj.com -ads.nola.com -ads.nordichardware.com -ads.nordichardware.se -ads.nwsource.com -ads.nyi.net -ads.nytimes.com -ads.nyx.cz -ads.nzcity.co.nz -ads.o2.pl -ads.oddschecker.com -ads.okcimg.com -ads.ole.com -ads.olivebrandresponse.com -ads.oneplace.com -ads.ookla.com -ads.optusnet.com.au -ads.outpersonals.com -ads.p161.net -ads.passion.com -ads.pennet.com -ads.penny-arcade.com -ads.pheedo.com -ads.phpclasses.org -ads.pickmeup-ltd.com -ads.pkr.com -ads.planet.nl -ads.pni.com -ads.pof.com -ads.powweb.com -ads.primissima.it -ads.printscr.com -ads.prisacom.com -ads.program3.com -ads.psd2html.com -ads.pushplay.com -ads.quoka.de -ads.rcs.it -ads.recoletos.es -ads.rediff.com -ads.redlightcenter.com -ads.redtube.com -ads.resoom.de -ads.returnpath.net -ads.rottentomatoes.com -ads.rpgdot.com -ads.s3.sitepoint.com -ads.satyamonline.com -ads.savannahnow.com -ads.saymedia.com -ads.scifi.com -ads.seniorfriendfinder.com -ads.sexinyourcity.com -ads.shizmoo.com -ads.shopstyle.com -ads.sift.co.uk -ads.silverdisc.co.uk -ads.slim.com -ads.smartclick.com -ads.soft32.com -ads.space.com -ads.spoonfeduk.com -ads.sptimes.com -ads.stackoverflow.com -ads.stationplay.com -ads.struq.com -ads.sun.com -ads.supplyframe.com -ads.t-online.de -ads.tahono.com -ads.techtv.com -ads.techweb.com -ads.telegraph.co.uk -ads.theglobeandmail.com -ads.themovienation.com -ads.thestar.com -ads.timeout.com -ads.tjwi.info -ads.tmcs.net -ads.totallyfreestuff.com -ads.townhall.com -ads.trinitymirror.co.uk -ads.tripod.com -ads.tripod.lycos.co.uk -ads.tripod.lycos.de -ads.tripod.lycos.es -ads.tripod.lycos.it -ads.tripod.lycos.nl -ads.tripod.spray.se -ads.tso.dennisnet.co.uk -ads.uknetguide.co.uk -ads.ultimate-guitar.com -ads.uncrate.com -ads.undertone.com -ads.usatoday.com -ads.v3.com -ads.verticalresponse.com -ads.vgchartz.com -ads.videosz.com -ads.virtual-nights.com -ads.virtualcountries.com -ads.vnumedia.com -ads.waps.cn -ads.wapx.cn -ads.weather.ca -ads.web.aol.com -ads.web.cs.com -ads.web.de -ads.webmasterpoint.org -ads.websiteservices.com -ads.whi.co.nz -ads.whoishostingthis.com -ads.wiezoekje.nl -ads.wikia.nocookie.net -ads.wineenthusiast.com -ads.wunderground.com -ads.wwe.biz -ads.xhamster.com -ads.xtra.co.nz -ads.y-0.net -ads.yimg.com -ads.yldmgrimg.net -ads.yourfreedvds.com -ads.youtube.com -ads.zdnet.com -ads.ztod.com -ads03.redtube.com -ads1.canoe.ca -ads1.mediacapital.pt -ads1.msn.com -ads1.rne.com -ads1.theglobeandmail.com -ads1.virtual-nights.com -ads10.speedbit.com -ads180.com -ads2.brazzers.com -ads2.clearchannel.com -ads2.contentabc.com -ads2.gamecity.net -ads2.jubii.dk -ads2.net-communities.co.uk -ads2.oneplace.com -ads2.rne.com -ads2.virtual-nights.com -ads2.xnet.cz -ads2004.treiberupdate.de -ads3.contentabc.com -ads3.gamecity.net -ads3.virtual-nights.com -ads4.clearchannel.com -ads4.gamecity.net -ads4.virtual-nights.com -ads4homes.com -ads5.canoe.ca -ads5.virtual-nights.com -ads6.gamecity.net -ads7.gamecity.net -ads8.com -adsatt.abc.starwave.com -Adsatt.ABCNews.starwave.com -adsatt.espn.go.com -adsatt.espn.starwave.com -Adsatt.go.starwave.com -adsby.bidtheatre.com -adscale.de -adscholar.com -adscience.nl -adscpm.com -adsdaq.com -adsdk.com -adsend.de -adserv.evo-x.de -adserv.gamezone.de -adserv.iafrica.com -adserv.qconline.com -adserv.quality-channel.de -adserve.ams.rhythmxchange.com -adserver-live.yoc.mobi -adserver.43plc.com -adserver.71i.de -adserver.adultfriendfinder.com -adserver.aidameter.com -adserver.aol.fr -adserver.barrapunto.com -adserver.beggarspromo.com -adserver.betandwin.de -adserver.bing.com -adserver.bizhat.com -adserver.break-even.it -adserver.cams.com -adserver.clashmusic.com -adserver.com -adserver.digitoday.com -adserver.dotcommedia.de -adserver.finditquick.com -adserver.flossiemediagroup.com -adserver.freecity.de -adserver.freenet.de -adserver.friendfinder.com -adserver.hardsextube.com -adserver.hardwareanalysis.com -adserver.html.it -adserver.irishwebmasterforum.com -adserver.janes.com -adserver.kyoceramita-europe.com -adserver.libero.it -adserver.news.com.au -adserver.ngz-network.de -adserver.nydailynews.com -adserver.o2.pl -adserver.oddschecker.com -adserver.omroepzeeland.nl -adserver.pl -adserver.portalofevil.com -adserver.portugalmail.net -adserver.portugalmail.pt -adserver.quizdingo.com -adserver.realhomesex.net -adserver.sanomawsoy.fi -adserver.sciflicks.com -adserver.sharewareonline.com -adserver.spankaway.com -adserver.startnow.com -adserver.theonering.net -adserver.twitpic.com -adserver.viagogo.com -adserver.virginmedia.com -adserver.yahoo.com -adserver01.de -adserver1-images.backbeatmedia.com -adserver1.backbeatmedia.com -adserver1.mindshare.de -adserver1.mokono.com -adserver1.ogilvy-interactive.de -adserver2.mindshare.de -adserver2.popdata.de -adserverplus.com -adserversolutions.com -adservinginternational.com -adsfac.eu -adsfac.net -adsfac.us -adshost1.com -adside.com -adsk2.co -adskape.ru -adsklick.de -adsmarket.com -adsmart.co.uk -adsmart.com -adsmart.net -adsmogo.com -adsnative.com -adsoftware.com -adsoldier.com -adsonar.com -adspace.ro -adspeed.net -adspirit.de -adsponse.de -adsremote.scrippsnetworks.com -adsrevenue.net -adsrv.deviantart.com -adsrv.eacdn.com -adsrv.iol.co.za -adsrvr.org -adsstat.com -adstat.4u.pl -adstest.weather.com -adsupply.com -adsupplyads.com -adswitcher.com -adsymptotic.com -adsynergy.com -adsys.townnews.com -adsystem.simplemachines.org -adtech.de -adtechus.com -adtegrity.net -adthis.com -adtiger.de -adtoll.com -adtology.com -adtoma.com -adtrace.org -adtrade.net -adtrading.de -adtrak.net -adtriplex.com -adultadvertising.com -adv-adserver.com -adv-banner.libero.it -adv.cooperhosting.net -adv.freeonline.it -adv.hwupgrade.it -adv.livedoor.com -adv.webmd.com -adv.wp.pl -adv.yo.cz -advariant.com -adventory.com -advert.bayarea.com -advert.dyna.ultraweb.hu -adverticum.com -adverticum.net -adverticus.de -advertise.com -advertiseireland.com -advertisespace.com -advertising.com -advertising.guildlaunch.net -advertisingbanners.com -advertisingbox.com -advertmarket.com -advertmedia.de -advertpro.sitepoint.com -advertpro.ya.com -adverts.carltononline.com -advertserve.com -advertstream.com -advertwizard.com -advideo.uimserv.net -adview.ppro.de -advisormedia.cz -adviva.com -adviva.net -advnt.com -adwareremovergold.com -adwhirl.com -adwitserver.com -adworldnetwork.com -adworx.at -adworx.be -adworx.nl -adx.allstar.cz -adx.atnext.com -adxpansion.com -adxpose.com -adxvalue.com -adyea.com -adzerk.net -adzerk.s3.amazonaws.com -adzones.com -af-ad.co.uk -affbuzzads.com -affili.net -affiliate.1800flowers.com -affiliate.7host.com -affiliate.doubleyourdating.com -affiliate.dtiserv.com -affiliate.gamestop.com -affiliate.mercola.com -affiliate.mogs.com -affiliate.offgamers.com -affiliate.travelnow.com -affiliate.viator.com -affiliatefuel.com -affiliatefuture.com -affiliates.allposters.com -affiliates.babylon.com -affiliates.devilfishpartners.com -affiliates.digitalriver.com -affiliates.globat.com -affiliates.ige.com -affiliates.internationaljock.com -affiliates.jlist.com -affiliates.streamray.com -affiliates.thinkhost.net -affiliates.thrixxx.com -affiliates.ultrahosting.com -affiliatetracking.com -affiliatetracking.net -affiliatewindow.com -affiliation-france.com -afftracking.justanswer.com -ah-ha.com -ahalogy.com -aidu-ads.de -aim4media.com -aistat.net -aktrack.pubmatic.com -alclick.com -alenty.com -alexa-sitestats.s3.amazonaws.com -all4spy.com -alladvantage.com -allosponsor.com -amazingcounters.com -amazon-adsystem.com -amung.us -an.tacoda.net -anahtars.com -analytics.adpost.org -analytics.google.com -analytics.live.com -analytics.yahoo.com -anm.intelli-direct.com -annonser.dagbladet.no -apex-ad.com -api.intensifier.de -apture.com -arc1.msn.com -arcadebanners.com -ard.xxxblackbook.com -are-ter.com -as.webmd.com -as1.advfn.com -as2.advfn.com -as5000.com -assets1.exgfnetwork.com -assoc-amazon.com -at-adserver.alltop.com -atdmt.com -athena-ads.wikia.com -atwola.com -auctionads.com -auctionads.net -audience2media.com -audit.median.hu -audit.webinform.hu -auto-bannertausch.de -autohits.dk -avenuea.com -avpa.javalobby.org -avres.net -avsads.com -awempire.com -awin1.com -aylarl.com -azfront.com -b-1st.com -b.aol.com -b.engadget.com -ba.afl.rakuten.co.jp -babs.tv2.dk -backbeatmedia.com -banik.redigy.cz -banner-exchange-24.de -banner.ad.nu -banner.alphacool.de -banner.ambercoastcasino.com -banner.blogranking.net -banner.buempliz-online.ch -banner.casino.net -banner.casinodelrio.com -banner.cotedazurpalace.com -banner.coza.com -banner.cz -banner.easyspace.com -banner.elisa.net -banner.eurogrand.com -banner.featuredusers.com -banner.getgo.de -banner.goldenpalace.com -banner.img.co.za -banner.inyourpocket.com -banner.jobsahead.com -banner.joylandcasino.com -banner.kiev.ua -banner.linux.se -banner.media-system.de -banner.mindshare.de -banner.nixnet.cz -banner.noblepoker.com -banner.northsky.com -banner.orb.net -banner.penguin.cz -banner.prestigecasino.com -banner.rbc.ru -banner.relcom.ru -banner.tanto.de -banner.titan-dsl.de -banner.vadian.net -banner.webmersion.com -banner.wirenode.com -bannerads.de -bannerboxes.com -bannercommunity.de -bannerconnect.com -bannerconnect.net -bannerexchange.cjb.net -bannerflow.com -bannergrabber.internet.gr -bannerhost.com -bannerimage.com -bannerlandia.com.ar -bannermall.com -bannermarkt.nl -bannerpower.com -banners.adultfriendfinder.com -banners.amigos.com -banners.apnuk.com -banners.asiafriendfinder.com -banners.audioholics.com -banners.babylon-x.com -banners.bol.com.br -banners.cams.com -banners.clubseventeen.com -banners.czi.cz -banners.dine.com -banners.direction-x.com -banners.directnic.com -banners.easydns.com -banners.ebay.com -banners.freett.com -banners.friendfinder.com -banners.getiton.com -banners.iq.pl -banners.isoftmarketing.com -banners.lifeserv.com -banners.linkbuddies.com -banners.passion.com -banners.resultonline.com -banners.sexsearch.com -banners.sys-con.com -banners.thomsonlocal.com -banners.videosz.com -banners.virtuagirlhd.com -banners.wunderground.com -bannerserver.com -bannersgomlm.com -bannershotlink.perfectgonzo.com -bannersng.yell.com -bannerspace.com -bannerswap.com -bannery.cz -bannieres.acces-contenu.com -bans.adserver.co.il -bans.bride.ru -barnesandnoble.bfast.com -baypops.com -bbelements.com -bbn.img.com.ua -begun.ru -belstat.com -belstat.nl -berp.com -best-pr.info -best-top.ro -bestsearch.net -bhclicks.com -bidclix.com -bidclix.net -bidtrk.com -bidvertiser.com -bigads.guj.de -bigbangmedia.com -bigclicks.com -billboard.cz -bitads.net -bitmedianetwork.com -bizad.nikkeibp.co.jp -bizrate.com -blast4traffic.com -blingbucks.com -blogads.com -blogcounter.de -blogherads.com -blogrush.com -blogtoplist.se -blogtopsites.com -blueadvertise.com -bluekai.com -bluelithium.com -bluewhaleweb.com -bm.annonce.cz -bn.bfast.com -boersego-ads.de -boldchat.com -boom.ro -boomads.com -boost-my-pr.de -box.anchorfree.net -bpath.com -braincash.com -brandreachsys.com -bravenet.com.invalid -bridgetrack.com -brightinfo.com -british-banners.com -bs.yandex.ru -budsinc.com -bullseye.backbeatmedia.com -buyhitscheap.com -buysellads.com -buzzonclick.com -bvalphaserver.com -bwp.download.com -c.bigmir.net -c.compete.com -c1.nowlinux.com -campaign.bharatmatrimony.com -caniamedia.com -carbonads.com -carbonads.net -casalemedia.com -casalmedia.com -cash4members.com -cash4popup.de -cashcrate.com -cashengines.com -cashfiesta.com -cashlayer.com -cashpartner.com -casinogames.com -casinopays.com -casinorewards.com -casinotraffic.com -casinotreasure.com -cbanners.virtuagirlhd.com -cben1.net -cbmall.com -cbx.net -cdn.freefacti.com -cecash.com -ceskydomov.alias.ngs.modry.cz -cetrk.com -cgicounter.puretec.de -ch.questionmarket.com -channelintelligence.com -chart.dk -chartbeat.com -chartbeat.net -checkm8.com -checkstat.nl -chestionar.ro -chitika.net -cibleclick.com -cityads.telus.net -cj.com -cjbmanagement.com -cjlog.com -claria.com -class-act-clicks.com -click.absoluteagency.com -click.fool.com -click.kmindex.ru -click2freemoney.com -click2paid.com -clickability.com -clickadz.com -clickagents.com -clickbank.com -clickbank.net -clickbooth.com -clickboothlnk.com -clickbrokers.com -clickcompare.co.uk -clickdensity.com -clickedyclick.com -clickhereforcellphones.com -clickhouse.com -clickhype.com -clicklink.jp -clickmedia.ro -clicks.equantum.com -clicks.mods.de -clickserve.cc-dt.com -clicksor.com -clicktag.de -clickthrucash.com -clickthruserver.com -clickthrutraffic.com -clicktrace.info -clicktrack.ziyu.net -clicktracks.com -clicktrade.com -clickxchange.com -clickz.com -clickzxc.com -clicmanager.fr -clients.tbo.com -clixgalore.com -clkads.com -clkrev.com -cluster.adultworld.com -clustrmaps.com -cmpstar.com -cnomy.com -cnt.spbland.ru -cnt1.pocitadlo.cz -code-server.biz -colonize.com -comclick.com -commindo-media-ressourcen.de -commissionmonster.com -compactbanner.com -comprabanner.it -connextra.com -contaxe.de -content.acc-hd.de -content.ad -contextweb.com -conversantmedia.com -conversionruler.com -cookies.cmpnet.com -coremetrics.com -count.rbc.ru -count.rin.ru -count.west263.com -counted.com -counter.avtoindex.com -counter.bloke.com -counter.cnw.cz -counter.cz -counter.dreamhost.com -counter.fateback.com -counter.mirohost.net -counter.mojgorod.ru -counter.nowlinux.com -counter.rambler.ru -counter.search.bg -counter.sparklit.com -counter.yadro.ru -counters.honesty.com -counting.kmindex.ru -counts.tucows.com -coupling-media.de -cpalead.com -cpays.com -cpmaffiliation.com -cpmstar.com -cpxadroit.com -cpxinteractive.com -cqcounter.com -crakmedia.com -craktraffic.com -crawlability.com -crazypopups.com -creafi-online-media.com -creative.ak.facebook.com -creative.whi.co.nz -creatives.as4x.tmcs.net -creatives.livejasmin.com -crispads.com -criteo.com -crowdgravity.com -crtv.mate1.com -crwdcntrl.net -ctnetwork.hu -cubics.com -customad.cnn.com -cyberbounty.com -cybermonitor.com -d.adroll.com -dakic-ia-300.com -danban.com -dapper.net -datashreddergold.com -dbbsrv.com -dc-storm.com -de17a.com -dealdotcom.com -debtbusterloans.com -decknetwork.net -deloo.de -demandbase.com -depilflash.tv -di1.shopping.com -dialerporn.com -didtheyreadit.com -direct-xxx-access.com -directaclick.com -directivepub.com -directleads.com -directorym.com -directtrack.com -discountclick.com -displayadsmedia.com -displaypagerank.com -dist.belnk.com -dmtracker.com -dmtracking.alibaba.com -dmtracking2.alibaba.com -dnads.directnic.com -domaining.in -domainsponsor.com -domainsteam.de -doubleclick.com -doubleclick.de -doubleclick.net -doublepimp.com -drumcash.com -dynamic.fmpub.net -e-adimages.scrippsnetworks.com -e-bannerx.com -e-debtconsolidation.com -e-m.fr -e-n-t-e-r-n-e-x.com -e-planning.net -e.kde.cz -eadexchange.com -eas.almamedia.fi -easyhits4u.com -ebayadvertising.com -ebocornac.com -ebuzzing.com -ecircle-ag.com -eclick.vn -ecoupons.com -edgeio.com -effectivemeasure.com -effectivemeasure.net -eiv.baidu.com -elitedollars.com -elitetoplist.com -emarketer.com -emediate.dk -emediate.eu -emonitor.takeit.cz -engine.awaps.net -engine.espace.netavenir.com -enginenetwork.com -enoratraffic.com -enquisite.com -entercasino.com -entrecard.s3.amazonaws.com -epiccash.com -eqads.com -ero-advertising.com -esellerate.net -estat.com -etahub.com -etargetnet.com -ethicalads.net -etracker.de -eu-adcenter.net -eu1.madsone.com -eur.a1.yimg.com -eurekster.com -euro-linkindex.de -euroclick.com -european-toplist.de -euroranking.de -euros4click.de -eusta.de -evergage.com -evidencecleanergold.com -ewebcounter.com -exchange-it.com -exchange.bg -exchangead.com -exchangeclicksonline.com -exit76.com -exitexchange.com -exitfuel.com -exoclick.com -exogripper.com -experteerads.com -exponential.com -express-submit.de -extractorandburner.com -extreme-dm.com -extremetracking.com -eyeblaster.com -eyereturn.com -eyeviewads.com -eyewonder.com -ezula.com -f5biz.com -fast-adv.it -fastclick.com -fastclick.com.edgesuite.net -fastclick.net -fb-promotions.com -fc.webmasterpro.de -feedbackresearch.com -feedjit.com -ffxcam.fairfax.com.au -fimc.net -fimserve.com -findcommerce.com -findyourcasino.com -fineclicks.com -first.nova.cz -firstlightera.com -flashtalking.com -fleshlightcash.com -flexbanner.com -flowgo.com -flurry.com -fonecta.leiki.com -foo.cosmocode.de -forex-affiliate.net -fpctraffic.com -fpctraffic2.com -fragmentserv.iac-online.de -free-banners.com -freebanner.com -freelogs.com -freeonlineusers.com -freepay.com -freestats.com -freestats.tv -freewebcounter.com -funklicks.com -funpageexchange.com -fusionads.net -fusionquest.com -fxclix.com -fxstyle.net -galaxien.com -game-advertising-online.com -gamehouse.com -gamesites100.net -gamesites200.com -gamesitestop100.com -gator.com -gbanners.hornymatches.com -gemius.pl -geo.digitalpoint.com -geobanner.adultfriendfinder.com -geovisite.com -german-linkindex.de -getclicky.com -globalismedia.com -globaltakeoff.net -globaltrack.com -globe7.com -globus-inter.com -gmads.net -go-clicks.de -go-rank.de -goingplatinum.com -gold.weborama.fr -goldstats.com -google-analytics.com -googleadservices.com -googlesyndication.com -gostats.com -gp.dejanews.com -gpr.hu -grafstat.ro -grapeshot.co.uk -greystripe.com -gtop.ro -gtop100.com -harrenmedia.com -harrenmedianetwork.com -havamedia.net -heias.com -hentaicounter.com -herbalaffiliateprogram.com -hexusads.fluent.ltd.uk -heyos.com -hgads.com -hidden.gogoceleb.com -hightrafficads.com -histats.com -hit-parade.com -hit-ranking.de -hit.bg -hit.ua -hit.webcentre.lycos.co.uk -hitbox.com -hitcents.com -hitexchange.net -hitfarm.com -hitiz.com -hitlist.ru -hitlounge.com -hitometer.com -hits.europuls.eu -hits.informer.com -hits.puls.lv -hits.theguardian.com -hits4me.com -hits4pay.com -hitslink.com -hittail.com -hollandbusinessadvertising.nl -homepageking.de -hostedads.realitykings.com -hotkeys.com -hotlog.ru -hotrank.com.tw -htmlhubing.xyz -httpool.com -hurricanedigitalmedia.com -hydramedia.com -hyperbanner.net -hypertracker.com -i-clicks.net -i.xx.openx.com -i1img.com -i1media.no -ia.iinfo.cz -iad.anm.co.uk -iadnet.com -iasds01.com -iconadserver.com -icptrack.com -idcounter.com -identads.com -idot.cz -idregie.com -idtargeting.com -ientrymail.com -iesnare.com -ifa.tube8live.com -ilbanner.com -ilead.itrack.it -iliillliO00OO0.321.cn -ilovecheating.com -imageads.canoe.ca -imagecash.net -images-pw.secureserver.net -images.v3.com -imarketservices.com -img.prohardver.hu -imgpromo.easyrencontre.com -imitrk.com -imonitor.nethost.cz -imprese.cz -impressionmedia.cz -impressionz.co.uk -imrworldwide.com -inboxdollars.com -incentaclick.com -indexstats.com -indieclick.com -industrybrains.com -inetlog.ru -infinite-ads.com -infinityads.com -infolinks.com -information.com -inringtone.com -insightexpress.com -insightexpressai.com -inspectorclick.com -instantmadness.com -intelliads.com -intellitxt.com -interactive.forthnet.gr -intergi.com -internetfuel.com -interreklame.de -interstat.hu -ip.ro -ip193.cn -iperceptions.com -ipro.com -ireklama.cz -itfarm.com -itop.cz -its-that-easy.com -itsptp.com -jcount.com -jinkads.de -joetec.net -jokedollars.com -js.users.51.la -juicyads.com -jumptap.com -justrelevant.com -justwebads.com -k.iinfo.cz -kanoodle.com -keymedia.hu -kindads.com -kissmetrics.com -kliks.nl -komoona.com -kompasads.com -kontera.com -kt-g.de -ktu.sv2.biz -lakequincy.com -layer-ad.de -layer-ads.de -lbn.ru -lct.salesforce.com -lead-analytics.nl -leadaffiliates.com -leadboltads.net -leadclick.com -leadingedgecash.com -leadzupc.com -leanoisgo.com -levelrate.de -lfstmedia.com -liftdna.com -ligatus.com -ligatus.de -lightningcast.net -lightspeedcash.com -link-booster.de -link4ads.com -linkadd.de -linkbuddies.com -linkexchange.com -linkexchange.ru -linkprice.com -linkrain.com -linkreferral.com -links-ranking.de -linkshighway.com -linkshighway.net -linkstorms.com -linkswaper.com -linktarget.com -liquidad.narrowcastmedia.com -liveintent.com -liverail.com -loading321.com -log.btopenworld.com -logua.com -lop.com -lucidmedia.com -lzjl.com -m.webtrends.com -m1.webstats4u.com -m4n.nl -madclient.uimserv.net -madisonavenue.com -mads.cnet.com -madvertise.de -marchex.com -market-buster.com -marketing.888.com -marketing.hearstmagazines.nl -marketing.nyi.net -marketing.osijek031.com -marketingsolutions.yahoo.com -maroonspider.com -mas.sector.sk -mastermind.com -matchcraft.com -mathtag.com -max.i12.de -maximumcash.com -mbn.com.ua -mbs.megaroticlive.com -mbuyu.nl -mdotm.com -measuremap.com -media-adrunner.mycomputer.com -media-servers.net -media.ftv-publicite.fr -media.funpic.de -media6degrees.com -mediaarea.eu -mediacharger.com -mediadvertising.ro -mediageneral.com -mediamath.com -mediamgr.ugo.com -mediaplazza.com -mediaplex.com -mediascale.de -mediatext.com -mediax.angloinfo.com -mediaz.angloinfo.com -medleyads.com -medyanetads.com -megacash.de -megago.com -megastats.com -megawerbung.de -memorix.sdv.fr -metaffiliation.com -metanetwork.com -methodcash.com -metrics.windowsitpro.com -mgid.com -miarroba.com -microstatic.pl -microticker.com -midnightclicking.com -misstrends.com -mixpanel.com -mixtraffic.com -mlm.de -mmismm.com -mmtro.com -moatads.com -mobclix.com -mocean.mobi -moneyexpert.com -monsterpops.com -mopub.com -mouseflow.com -mpstat.us -mr-rank.de -mrskincash.com -mtree.com -musiccounter.ru -muwmedia.com -myaffiliateprogram.com -mybloglog.com -mycounter.ua -mypagerank.net -mypagerank.ru -mypowermall.com -mystat-in.net -mystat.pl -mytop-in.net -n69.com -naiadsystems.com -naj.sk -namimedia.com -nastydollars.com -navigator.io -navrcholu.cz -nbjmp.com -ndparking.com -nedstat.com -nedstat.nl -nedstatbasic.net -nedstatpro.net -nend.net -neocounter.neoworx-blog-tools.net -neoffic.com -net-filter.com -netaffiliation.com -netagent.cz -netclickstats.com -netcommunities.com -netdirect.nl -netflame.cc -netincap.com -netpool.netbookia.net -netshelter.net -network.business.com -neudesicmediagroup.com -newads.bangbros.com -newbie.com -newnet.qsrch.com -newnudecash.com -newopenx.detik.com -newt1.adultadworld.com -newt1.adultworld.com -newtopsites.com -ng3.ads.warnerbros.com -ngs.impress.co.jp -nitroclicks.com -novem.pl -nuggad.net -numax.nu-1.com -nuseek.com -oas.benchmark.fr -oas.foxnews.com -oas.repubblica.it -oas.roanoke.com -oas.salon.com -oas.toronto.com -oas.uniontrib.com -oas.villagevoice.com -oascentral.businessweek.com -oascentral.chicagobusiness.com -oascentral.fortunecity.com -oascentral.register.com -oewa.at -oewabox.at -offerforge.com -offermatica.com -olivebrandresponse.com -omniture.com -onclasrv.com -onclickads.net -oneandonlynetwork.com -onenetworkdirect.com -onestat.com -onestatfree.com -onewaylinkexchange.net -online-metrix.net -onlinecash.com -onlinecashmethod.com -onlinerewardcenter.com -openad.tf1.fr -openad.travelnow.com -openads.friendfinder.com -openads.org -openclick.com -openx.angelsgroup.org.uk -openx.blindferret.com -opienetwork.com -optimost.com -optmd.com -ordingly.com -ota.cartrawler.com -otto-images.developershed.com -outbrain.com -overture.com -owebmoney.ru -oxado.com -oxcash.com -oxen.hillcountrytexas.com -p.adpdx.com -pagead.l.google.com -pagefair.com -pagerank-estate-spb.ru -pagerank-ranking.com -pagerank-ranking.de -pagerank-server7.de -pagerank-submitter.com -pagerank-submitter.de -pagerank-suchmaschine.de -pagerank-united.de -pagerank4u.eu -pagerank4you.com -pageranktop.com -partage-facile.com -partner-ads.com -partner.pelikan.cz -partner.topcities.com -partnerad.l.google.com -partnercash.de -partners.priceline.com -passion-4.net -pay-ads.com -paycounter.com -paypopup.com -payserve.com -pbnet.ru -pcash.imlive.com -peep-auktion.de -peer39.com -pennyweb.com -pepperjamnetwork.com -percentmobile.com -perf.weborama.fr -perfectaudience.com -perfiliate.com -performancerevenue.com -performancerevenues.com -performancing.com -pgmediaserve.com -pgpartner.com -pheedo.com -phoenix-adrunner.mycomputer.com -phpadsnew.new.natuurpark.nl -phpmyvisites.net -picadmedia.com -pillscash.com -pimproll.com -pixel.adsafeprotected.com -pixel.jumptap.com -planetactive.com -play4traffic.com -playhaven.com -plista.com -plugrush.com -pointroll.com -pop-under.ru -popads.net -popub.com -popunder.ru -popup.msn.com -popupmoney.com -popupnation.com -popups.infostart.com -popuptraffic.com -porngraph.com -porntrack.com -postrelease.com -potenza.cz -pr-star.de -pr-ten.de -pr5dir.com -praddpro.de -prchecker.info -precisioncounter.com -predictad.com -premium-offers.com -primaryads.com -primetime.net -privatecash.com -pro-advertising.com -pro.i-doctor.co.kr -proext.com -profero.com -projectwonderful.com -promo.badoink.com -promo.ulust.com -promo1.webcams.nl -promobenef.com -promos.fling.com -promote.pair.com -promotion-campaigns.com -pronetadvertising.com -propellerads.com -proranktracker.com -proton-tm.com -protraffic.com -provexia.com -prsitecheck.com -psstt.com -pub.chez.com -pub.club-internet.fr -pub.hardware.fr -pub.realmedia.fr -pubdirecte.com -publicidad.elmundo.es -pubmatic.com -pubs.lemonde.fr -pulse360.com -q.azcentral.com -qctop.com -qnsr.com -quantcast.com -quantserve.com -quarterserver.de -questaffiliates.net -quigo.com -quinst.com -quisma.com -rad.msn.com -radar.cedexis.com -radarurl.com -radiate.com -rampidads.com -rank-master.com -rank-master.de -rankchamp.de -ranking-charts.de -ranking-hits.de -ranking-id.de -ranking-links.de -ranking-liste.de -ranking-street.de -rankingchart.de -rankingscout.com -rankyou.com -rapidcounter.com -rate.ru -ratings.lycos.com -rb1.design.ru -re-directme.com -reachjunction.com -reactx.com -readserver.net -realcastmedia.com -realclix.com -realmedia-a800.d4p.net -realtechnetwork.com -realtracker.com -reduxmedia.com -reduxmediagroup.com -reedbusiness.com -reefaquarium.biz -referralware.com -regnow.com -reinvigorate.net -reklam.rfsl.se -reklama.mironet.cz -reklama.reflektor.cz -reklamcsere.hu -reklame.unwired-i.net -reklamer.com.ua -relevanz10.de -relmaxtop.com -remotead.cnet.com -republika.onet.pl -retargeter.com -revenue.net -revenuedirect.com -revsci.net -revstats.com -richmails.com -richmedia.yimg.com -richwebmaster.com -rightstats.com -rlcdn.com -rle.ru -rmads.msn.com -rmedia.boston.com -roar.com -robotreplay.com -roia.biz -rok.com.com -rose.ixbt.com -rotabanner.com -roxr.net -rtbpop.com -rtbpopd.com -ru-traffic.com -ru4.com -rubiconproject.com -s.adroll.com -s2d6.com -sageanalyst.net -sbx.pagesjaunes.fr -scambiobanner.aruba.it -scanscout.com -scopelight.com -scorecardresearch.com -scratch2cash.com -scripte-monster.de -searchfeast.com -searchmarketing.com -searchramp.com -secure.webconnect.net -sedoparking.com -sedotracker.com -seeq.com.invalid -sensismediasmart.com.au -seo4india.com -serv0.com -servedbyadbutler.com -servedbyopenx.com -servethis.com -services.hearstmags.com -serving-sys.com -sexaddpro.de -sexadvertentiesite.nl -sexcounter.com -sexinyourcity.com -sexlist.com -sextracker.com -sexystat.com -sezwho.com -shareadspace.com -shareasale.com -sharepointads.com -sher.index.hu -shinystat.com -shinystat.it -shoppingads.com -siccash.com -sidebar.angelfire.com -sinoa.com -sitebrand.geeks.com -sitemerkezi.net -sitemeter.com -sitestat.com -sixsigmatraffic.com -skylink.vn -slickaffiliate.com -slopeaota.com -sma.punto.net -smart4ads.com -smartadserver.com -smartbase.cdnservices.com -smowtion.com -snapads.com -snoobi.com -socialspark.com -softclick.com.br -spacash.com -sparkstudios.com -specificmedia.co.uk -specificpop.com -spezialreporte.de -spinbox.techtracker.com -spinbox.versiontracker.com -sponsorads.de -sponsorpro.de -sponsors.thoughtsmedia.com -spot.fitness.com -spotxchange.com -sprinks-clicks.about.com -spylog.com -spywarelabs.com -spywarenuker.com -spywords.com -srbijacafe.org -srwww1.com -starffa.com -start.freeze.com -stat.cliche.se -stat.dealtime.com -stat.dyna.ultraweb.hu -stat.pl -stat.su -stat.tudou.com -stat.webmedia.pl -stat.zenon.net -stat24.com -stat24.meta.ua -statcounter.com -static.fmpub.net -static.itrack.it -staticads.btopenworld.com -statistik-gallup.net -statm.the-adult-company.com -stats.blogger.com -stats.cts-bv.nl -stats.directnic.com -stats.hyperinzerce.cz -stats.mirrorfootball.co.uk -stats.olark.com -stats.suite101.com -stats.surfaid.ihost.com -stats.townnews.com -stats.unwired-i.net -stats.wordpress.com -stats.x14.eu -stats4all.com -statsie.com -statxpress.com -steelhouse.com -steelhousemedia.com -stickyadstv.com -suavalds.com -subscribe.hearstmags.com -sugoicounter.com -superclix.de -superstats.com -supertop.ru -supertop100.com -suptullog.com -surfmusik-adserver.de -swissadsolutions.com -swordfishdc.com -sx.trhnt.com -t.insigit.com -t.pusk.ru -taboola.com -tacoda.net -tagular.com -tailsweep.co.uk -tailsweep.com -tailsweep.se -takru.com -tangerinenet.biz -tapad.com -targad.de -targetingnow.com -targetnet.com -targetpoint.com -tatsumi-sys.jp -tcads.net -techclicks.net -teenrevenue.com -teliad.de -text-link-ads.com -textad.sexsearch.com -textads.biz -textads.opera.com -textlinks.com -tfag.de -theadhost.com -theads.me -thebugs.ws -thecounter.com -therapistla.com -therichkids.com -thrnt.com -thruport.com -tinybar.com -tizers.net -tlvmedia.com -tntclix.co.uk -top-casting-termine.de -top-site-list.com -top.list.ru -top.mail.ru -top.proext.com -top100-images.rambler.ru -top100.mafia.ru -top123.ro -top20.com -top20free.com -top90.ro -topbarh.box.sk -topblogarea.se -topbucks.com -topforall.com -topgamesites.net -toplist.cz -toplist.pornhost.com -toplista.mw.hu -toplistcity.com -topmmorpgsites.com -topping.com.ua -toprebates.com -topsafelist.net -topsearcher.com -topsir.com -topsite.lv -topsites.com.br -topstats.com -totemcash.com -touchclarity.com -touchclarity.natwest.com -tour.brazzers.com -tpnads.com -track.adform.net -track.anchorfree.com -track.gawker.com -trackalyzer.com -tracker.icerocket.com -tracker.marinsm.com -tracking.crunchiemedia.com -tracking.gajmp.com -tracking.internetstores.de -tracking.yourfilehost.com -tracking101.com -trackingsoft.com -trackmysales.com -tradeadexchange.com -tradedoubler.com -traffic-exchange.com -traffic.liveuniversenetwork.com -trafficadept.com -trafficcdn.liveuniversenetwork.com -trafficfactory.biz -trafficholder.com -traffichunt.com -trafficjunky.net -trafficleader.com -trafficsecrets.com -trafficspaces.net -trafficstrategies.com -trafficswarm.com -traffictrader.net -trafficz.com -trafficz.net -traffiq.com -trafic.ro -travis.bosscasinos.com -trekblue.com -trekdata.com -trendcounter.com -trhunt.com -tribalfusion.com -trix.net -truehits.net -truehits1.gits.net.th -truehits2.gits.net.th -tsms-ad.tsms.com -tubedspots.com -tubemogul.com -turn.com -tvas-a.pw -tvas-c.pw -tvmtracker.com -twittad.com -tyroo.com -uarating.com -ukbanners.com -ultramercial.com -ultsearch.com -unanimis.co.uk -untd.com -updated.com -urlcash.net -us.a1.yimg.com -usapromotravel.com -usmsad.tom.com -utarget.co.uk -utils.mediageneral.net -v1.cnzz.com -validclick.com -valuead.com -valueclick.com -valueclickmedia.com -valuecommerce.com -valuesponsor.com -veille-referencement.com -ventivmedia.com -vericlick.com -vertadnet.com -veruta.com -vervewireless.com -vibrantmedia.com -video-stats.video.google.com -videoegg.com -view4cash.de -viewpoint.com -visistat.com -visit.webhosting.yahoo.com -visitbox.de -visual-pagerank.fr -visualrevenue.com -voicefive.com -vpon.com -vrs.cz -vs.tucows.com -vungle.com -wads.webteh.com -warlog.info -warlog.ru -wdads.sx.atl.publicus.com -web-stat.com -web.informer.com -web2.deja.com -webads.co.nz -webads.nl -webangel.ru -webcash.nl -webcounter.cz -webcounter.goweb.de -webgains.com -webmaster-partnerprogramme24.de -webmasterplan.com -webmasterplan.de -weborama.fr -webpower.com -webreseau.com -webseoanalytics.com -websponsors.com -webstat.channel4.com -webstat.com -webstat.net -webstats4u.com -webtrackerplus.com -webtraffic.se -webtraxx.de -webtrendslive.com -wegcash.com -werbung.meteoxpress.com -wetrack.it -whaleads.com -whenu.com -whispa.com -whoisonline.net -wholesaletraffic.info -widespace.com -widgetbucks.com -wikia-ads.wikia.com -window.nixnet.cz -wintricksbanner.googlepages.com -witch-counter.de -wlmarketing.com -wmirk.ru -wonderlandads.com -wondoads.de -woopra.com -worldwide-cash.net -wtlive.com -www-banner.chat.ru -www-google-analytics.l.google.com -www.banner-link.com.br -www.dnps.com -www.kaplanindex.com -www.money4exit.de -www.photo-ads.co.uk -www1.gto-media.com -www8.glam.com -x-traceur.com -x6.yakiuchi.com -xchange.ro -xclicks.net -xertive.com -xg4ken.com -xiti.com -xplusone.com -xponsor.com -xq1.net -xrea.com -xtendmedia.com -xtremetop100.com -xxxcounter.com -xxxmyself.com -y.ibsys.com -yab-adimages.s3.amazonaws.com -yabuka.com -yadro.ru -yesads.com -yesadvertising.com -yieldads.com -yieldlab.net -yieldmanager.com -yieldmanager.net -yieldtraffic.com -yoc.mobi -yoggrt.com -z5x.net -zangocash.com -zanox-affiliate.de -zanox.com -zantracker.com -zedo.com -zencudo.co.uk -zenkreka.com -zenzuu.com -zeus.developershed.com -zeusclicks.com -zintext.com -zmedia.com \ No newline at end of file diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt index 0caeda1a..a466feec 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt @@ -19,6 +19,7 @@ package com.pitchedapps.frost.injectors import android.content.Context import android.graphics.Color import android.webkit.WebView +import androidx.annotation.VisibleForTesting import ca.allanwang.kau.kotlin.lazyContext import ca.allanwang.kau.utils.adjustAlpha import ca.allanwang.kau.utils.colorToBackground @@ -43,7 +44,8 @@ enum class CssAssets(val folder: String = THEME_FOLDER) : InjectorContract { MATERIAL_LIGHT, MATERIAL_DARK, MATERIAL_AMOLED, MATERIAL_GLASS, CUSTOM, ROUND_ICONS("components") ; - private val file = "${name.toLowerCase(Locale.CANADA)}.css" + @VisibleForTesting + internal val file = "${name.toLowerCase(Locale.CANADA)}.css" /** * Note that while this can be loaded from any thread, it is typically done through [load] diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt index 4b1bde43..e0be7977 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt @@ -18,6 +18,7 @@ package com.pitchedapps.frost.injectors import android.content.Context import android.webkit.WebView +import androidx.annotation.VisibleForTesting import ca.allanwang.kau.kotlin.lazyContext import com.pitchedapps.frost.utils.L import kotlinx.coroutines.Dispatchers @@ -32,11 +33,12 @@ import java.util.Locale * The enum name must match the css file name */ enum class JsAssets : InjectorContract { - MENU, MENU_DEBUG, CLICK_A, CONTEXT_A, MEDIA, HEADER_BADGES, HEADER_HIDER, TEXTAREA_LISTENER, NOTIF_MSG, + MENU, CLICK_A, CONTEXT_A, MEDIA, HEADER_BADGES, HEADER_HIDER, TEXTAREA_LISTENER, NOTIF_MSG, DOCUMENT_WATCHER ; - private val file = "${name.toLowerCase(Locale.CANADA)}.js" + @VisibleForTesting + internal val file = "${name.toLowerCase(Locale.CANADA)}.js" private val injector = lazyContext { try { val content = it.assets.open("js/$file").bufferedReader().use(BufferedReader::readText) diff --git a/app/src/test/kotlin/com/pitchedapps/frost/injectors/CssAssetsTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/injectors/CssAssetsTest.kt new file mode 100644 index 00000000..0613d28e --- /dev/null +++ b/app/src/test/kotlin/com/pitchedapps/frost/injectors/CssAssetsTest.kt @@ -0,0 +1,16 @@ +package com.pitchedapps.frost.injectors + +import java.io.File +import kotlin.test.Test +import kotlin.test.assertTrue + +class CssAssetsTest { + + @Test + fun verifyAssetsExist() { + CssAssets.values().forEach { asset -> + val file = File("src/web/assets/css/${asset.folder}/${asset.file}").absoluteFile + assertTrue(file.exists(), "${asset.name} not found at ${file.path}") + } + } +} \ No newline at end of file diff --git a/app/src/test/kotlin/com/pitchedapps/frost/injectors/JsAssetsTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/injectors/JsAssetsTest.kt new file mode 100644 index 00000000..eab62b27 --- /dev/null +++ b/app/src/test/kotlin/com/pitchedapps/frost/injectors/JsAssetsTest.kt @@ -0,0 +1,16 @@ +package com.pitchedapps.frost.injectors + +import java.io.File +import kotlin.test.Test +import kotlin.test.assertTrue + +class JsAssetsTest { + + @Test + fun verifyAssetsExist() { + JsAssets.values().forEach { asset -> + val file = File("src/web/assets/js/${asset.file}").absoluteFile + assertTrue(file.exists(), "${asset.name} not found at ${file.path}") + } + } +} \ No newline at end of file diff --git a/app/src/web/.gitignore b/app/src/web/.gitignore new file mode 100644 index 00000000..76a547ef --- /dev/null +++ b/app/src/web/.gitignore @@ -0,0 +1,25 @@ +node_modules/ +.sass-cache/ +package-lock.json + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml diff --git a/app/src/web/.idea/compiler.xml b/app/src/web/.idea/compiler.xml new file mode 100644 index 00000000..1a2fb332 --- /dev/null +++ b/app/src/web/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/web/.idea/encodings.xml b/app/src/web/.idea/encodings.xml new file mode 100644 index 00000000..15a15b21 --- /dev/null +++ b/app/src/web/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/web/.idea/misc.xml b/app/src/web/.idea/misc.xml new file mode 100644 index 00000000..28a804d8 --- /dev/null +++ b/app/src/web/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/web/.idea/modules.xml b/app/src/web/.idea/modules.xml new file mode 100644 index 00000000..e2d63b96 --- /dev/null +++ b/app/src/web/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/web/.idea/vcs.xml b/app/src/web/.idea/vcs.xml new file mode 100644 index 00000000..c2365ab1 --- /dev/null +++ b/app/src/web/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/web/.idea/watcherTasks.xml b/app/src/web/.idea/watcherTasks.xml new file mode 100644 index 00000000..32d1e6f4 --- /dev/null +++ b/app/src/web/.idea/watcherTasks.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/web/README.md b/app/src/web/README.md new file mode 100644 index 00000000..29981033 --- /dev/null +++ b/app/src/web/README.md @@ -0,0 +1,4 @@ +# Frost for Facebook Assets + +This is the root project for the assets, which is primarily css and js. +The assets that will be added to Android are within the `assets` folder. diff --git a/app/src/web/assets/adblock.txt b/app/src/web/assets/adblock.txt new file mode 100644 index 00000000..a35d95c8 --- /dev/null +++ b/app/src/web/assets/adblock.txt @@ -0,0 +1,2347 @@ +# Ad server list for use with hosts files to block ads +# +# For more information about this list, see: https://pgl.yoyo.org/adservers/ +# ---- +# last updated: Wed, 12 Jul 2017 13:54:58 GMT +# entries: 2331 +# format: hosts (hosts -- in hosts file format) +# credits: Peter Lowe - pgl@yoyo.org - https://pgl.yoyo.org/ - https://twitter.com/pgl +# this URL: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext&useip=0.0.0.0 +# other formats: https://pgl.yoyo.org/adservers/formats.php +# policy: https://pgl.yoyo.org/adservers/policy.php +# +# start date: Wed, 12 Jul 2017 00:00:00 +101com.com +101order.com +123found.com +180hits.de +180searchassistant.com +207.net +247media.com +24log.com +24log.de +24pm-affiliation.com +2mdn.net +2o7.net +360yield.com +4affiliate.net +4d5.net +50websads.com +518ad.com +51yes.com +600z.com +777partner.com +77tracking.com +7bpeople.com +7search.com +99count.com +a-ads.com +a-counter.kiev.ua +a.0day.kiev.ua +a.aproductmsg.com +a.collective-media.net +a.consumer.net +a.mktw.net +a.sakh.com +a.ucoz.net +a.ucoz.ru +a.xanga.com +a32.g.a.yimg.com +aaddzz.com +abacho.net +abc-ads.com +absoluteclickscom.com +abz.com +ac.rnm.ca +accounts.pkr.com.invalid +acsseo.com +actionsplash.com +actualdeals.com +acuityads.com +ad-balancer.at +ad-balancer.net +ad-center.com +ad-pay.de +ad-rotator.com +ad-server.gulasidorna.se +ad-serverparc.nl +ad-souk.com +ad-space.net +ad-tech.com +ad-up.com +ad.100.tbn.ru +ad.71i.de +ad.a8.net +ad.abcnews.com +ad.abctv.com +ad.aboutwebservices.com +ad.abum.com +ad.afy11.net +ad.allstar.cz +ad.altervista.org +ad.amgdgt.com +ad.anuntis.com +ad.auditude.com +ad.bizo.com +ad.bnmla.com +ad.bondage.com +ad.caradisiac.com +ad.centrum.cz +ad.cgi.cz +ad.choiceradio.com +ad.clix.pt +ad.cooks.com +ad.crwdcntrl.net +ad.digitallook.com +ad.directrev.com +ad.doctissimo.fr +ad.domainfactory.de +ad.e-kolay.net +ad.eurosport.com +ad.f1cd.ru +ad.flurry.com +ad.foxnetworks.com +ad.freecity.de +ad.gate24.ch +ad.globe7.com +ad.grafika.cz +ad.hbv.de +ad.hodomobile.com +ad.httpool.com +ad.hyena.cz +ad.iinfo.cz +ad.ilove.ch +ad.infoseek.com +ad.jamba.net +ad.jamster.co.uk +ad.jetsoftware.com +ad.keenspace.com +ad.leadbolt.net +ad.liveinternet.ru +ad.lupa.cz +ad.media-servers.net +ad.mediastorm.hu +ad.mgd.de +ad.musicmatch.com +ad.nachtagenten.de +ad.nozonedata.com +ad.nttnavi.co.jp +ad.nwt.cz +ad.onad.eu +ad.pandora.tv +ad.preferances.com +ad.profiwin.de +ad.prv.pl +ad.rambler.ru +ad.reunion.com +ad.scanmedios.com +ad.sensismediasmart.com.au +ad.seznam.cz +ad.simgames.net +ad.slutload.com +ad.smartclip.net +ad.tbn.ru +ad.technoratimedia.com +ad.thewheelof.com +ad.turn.com +ad.tv2.no +ad.twitchguru.com +ad.usatoday.com +ad.virtual-nights.com +ad.wavu.hu +ad.way.cz +ad.weatherbug.com +ad.wsod.com +ad.wz.cz +ad.yadro.ru +ad.yourmedia.com +ad.zanox.com +ad0.bigmir.net +ad01.mediacorpsingapore.com +ad1.emediate.dk +ad1.emule-project.org +ad1.kde.cz +ad1.pamedia.com.au +ad2.iinfo.cz +ad2.linxcz.cz +ad2.lupa.cz +ad2flash.com +ad2games.com +ad3.iinfo.cz +ad3.pamedia.com.au +ad4game.com +adaction.de +adadvisor.net +adap.tv +adapt.tv +adbanner.ro +adbard.net +adbers.com +adblade.com +adblockanalytics.com +adboost.de.vu +adboost.net +adbooth.net +adbot.com +adbrite.com +adbroker.de +adbunker.com +adbutler.com +adbutler.de +adbuyer.com +adbuyer3.lycos.com +adcash.com +adcast.deviantart.com +adcell.de +adcenter.mdf.se +adcenter.net +adcentriconline.com +adcept.net +adclick.com +adclient.uimserv.net +adclient1.tucows.com +adcomplete.com +adconion.com +adcontent.gamespy.com +adcycle.com +add.newmedia.cz +addealing.com +addfreestats.com +addme.com +adecn.com +ademails.com +adengage.com +adexchangeprediction.com +adexpose.com +adext.inkclub.com +adf.ly +adfactor.nl +adfarm.mediaplex.com +adflight.com +adforce.com +adform.com +adgardener.com +adgoto.com +adgridwork.com +adhese.be +adhese.com +adimage.asiaone.com.sg +adimage.guardian.co.uk +adimages.been.com +adimages.carsoup.com +adimages.go.com +adimages.homestore.com +adimages.omroepzeeland.nl +adimages.sanomawsoy.fi +adimg.cnet.com +adimg.com.com +adimg.uimserv.net +adimg1.chosun.com +adimgs.sapo.pt +adimpact.com +adinjector.net +adinterax.com +adisfy.com +adition.com +adition.de +adition.net +adizio.com +adjix.com +adjug.com +adjuggler.com +adjuggler.yourdictionary.com +adjustnetwork.com +adk2.com +adk2ads.tictacti.com +adland.ru +adlantic.nl +adledge.com +adlegend.com +adlog.com.com +adloox.com +adlooxtracking.com +adlure.net +admagnet.net +admailtiser.com +adman.gr +adman.in.gr +adman.otenet.gr +admanagement.ch +admanager.btopenworld.com +admanager.carsoup.com +admarketplace.net +admarvel.com +admax.nexage.com +admedia.com +admedia.ro +admeld.com +admerize.be +admeta.com +admex.com +adminder.com +adminshop.com +admized.com +admob.com +admonitor.com +admotion.com.ar +adnet-media.net +adnet.asahi.com +adnet.biz +adnet.de +adnet.ru +adnet.worldreviewer.com +adnetinteractive.com +adnetwork.net +adnetworkperformance.com +adnews.maddog2000.de +adnotch.com +adnxs.com +adocean.pl +adonspot.com +adoperator.com +adorigin.com +adpepper.dk +adpepper.nl +adperium.com +adpia.vn +adplus.co.id +adplxmd.com +adprofile.net +adprojekt.pl +adq.nextag.com +adrazzi.com +adreactor.com +adrecreate.com +adremedy.com +adreporting.com +adres.internet.com +adrevolver.com +adriver.ru +adrolays.de +adrotate.de +adrotator.se +adrta.com +ads-click.com +ads.4tube.com +ads.5ci.lt +ads.abovetopsecret.com +ads.aceweb.net +ads.activestate.com +ads.adfox.ru +ads.administrator.de +ads.adshareware.net +ads.adultfriendfinder.com +ads.adultswim.com +ads.advance.net +ads.adverline.com +ads.affiliates.match.com +ads.ak.facebook.com.edgesuite.net +ads.allvatar.com +ads.alt.com +ads.amdmb.com +ads.amigos.com +ads.aol.co.uk +ads.aol.com +ads.apn.co.nz +ads.appsgeyser.com +ads.as4x.tmcs.net +ads.as4x.tmcs.ticketmaster.com +ads.asia1.com.sg +ads.asiafriendfinder.com +ads.ask.com +ads.aspalliance.com +ads.avazu.net +ads.batpmturner.com +ads.beenetworks.net +ads.belointeractive.com +ads.berlinonline.de +ads.betanews.com +ads.betfair.com +ads.betfair.com.au +ads.bigchurch.com +ads.bigfoot.com +ads.bing.com +ads.bittorrent.com +ads.blog.com +ads.bloomberg.com +ads.bluelithium.com +ads.bluemountain.com +ads.bluesq.com +ads.bonniercorp.com +ads.boylesports.com +ads.brabys.com +ads.brazzers.com +ads.bumq.com +ads.businessweek.com +ads.canalblog.com +ads.canoe.ca +ads.casinocity.com +ads.cbc.ca +ads.cc +ads.cc-dt.com +ads.centraliprom.com +ads.cgnetworks.com +ads.channel4.com +ads.clearchannel.com +ads.co.com +ads.com.com +ads.contactmusic.com +ads.contentabc.com +ads.contextweb.com +ads.crakmedia.com +ads.creative-serving.com +ads.creativematch.com +ads.cricbuzz.com +ads.cybersales.cz +ads.dada.it +ads.datinggold.com +ads.datingyes.com +ads.dazoot.ro +ads.deltha.hu +ads.dennisnet.co.uk +ads.desmoinesregister.com +ads.detelefoongids.nl +ads.deviantart.com +ads.digital-digest.com +ads.digitalmedianet.com +ads.digitalpoint.com +ads.directionsmag.com +ads.domain.com +ads.domeus.com +ads.eagletribune.com +ads.easy-forex.com +ads.eatinparis.com +ads.economist.com +ads.edbindex.dk +ads.egrana.com.br +ads.einmedia.com +ads.electrocelt.com +ads.elitetrader.com +ads.emirates.net.ae +ads.epltalk.com +ads.eu.msn.com +ads.exactdrive.com +ads.expat-blog.biz +ads.expedia.com +ads.ezboard.com +ads.factorymedia.com +ads.fairfax.com.au +ads.faxo.com +ads.ferianc.com +ads.filmup.com +ads.financialcontent.com +ads.flooble.com +ads.fool.com +ads.footymad.net +ads.forbes.com +ads.forbes.net +ads.forium.de +ads.fortunecity.com +ads.fotosidan.se +ads.foxkidseurope.net +ads.foxnetworks.com +ads.foxnews.com +ads.freecity.de +ads.friendfinder.com +ads.ft.com +ads.futurenet.com +ads.gamecity.net +ads.gamershell.com +ads.gamespyid.com +ads.gamigo.de +ads.gaming-universe.de +ads.gawker.com +ads.geekswithblogs.net +ads.glispa.com +ads.gmodules.com +ads.godlikeproductions.com +ads.goyk.com +ads.gplusmedia.com +ads.gradfinder.com +ads.grindinggears.com +ads.groundspeak.com +ads.gsm-exchange.com +ads.gsmexchange.com +ads.guardian.co.uk +ads.guardianunlimited.co.uk +ads.guru3d.com +ads.hardwaresecrets.com +ads.harpers.org +ads.hbv.de +ads.hearstmags.com +ads.heartlight.org +ads.heias.com +ads.hideyourarms.com +ads.hollywood.com +ads.horsehero.com +ads.horyzon-media.com +ads.iafrica.com +ads.ibest.com.br +ads.ibryte.com +ads.icq.com +ads.ign.com +ads.img.co.za +ads.imgur.com +ads.indiatimes.com +ads.infi.net +ads.internic.co.il +ads.ipowerweb.com +ads.isoftmarketing.com +ads.itv.com +ads.iwon.com +ads.jewishfriendfinder.com +ads.jiwire.com +ads.jobsite.co.uk +ads.jpost.com +ads.jubii.dk +ads.justhungry.com +ads.kaktuz.net +ads.kelbymediagroup.com +ads.kinobox.cz +ads.kinxxx.com +ads.kompass.com +ads.krawall.de +ads.lesbianpersonals.com +ads.linuxfoundation.org +ads.linuxjournal.com +ads.linuxsecurity.com +ads.livenation.com +ads.mariuana.it +ads.massinfra.nl +ads.mcafee.com +ads.mediaodyssey.com +ads.medienhaus.de +ads.mgnetwork.com +ads.mmania.com +ads.moceanads.com +ads.motor-forum.nl +ads.motormedia.nl +ads.msn.com +ads.multimania.lycos.fr +ads.nationalgeographic.com +ads.ncm.com +ads.netmechanic.com +ads.networksolutions.com +ads.newdream.net +ads.newgrounds.com +ads.newmedia.cz +ads.newsint.co.uk +ads.newsquest.co.uk +ads.ninemsn.com.au +ads.nj.com +ads.nola.com +ads.nordichardware.com +ads.nordichardware.se +ads.nwsource.com +ads.nyi.net +ads.nytimes.com +ads.nyx.cz +ads.nzcity.co.nz +ads.o2.pl +ads.oddschecker.com +ads.okcimg.com +ads.ole.com +ads.olivebrandresponse.com +ads.oneplace.com +ads.ookla.com +ads.optusnet.com.au +ads.outpersonals.com +ads.passion.com +ads.pennet.com +ads.penny-arcade.com +ads.pheedo.com +ads.phpclasses.org +ads.pickmeup-ltd.com +ads.planet.nl +ads.pni.com +ads.pof.com +ads.powweb.com +ads.primissima.it +ads.printscr.com +ads.prisacom.com +ads.program3.com +ads.psd2html.com +ads.pushplay.com +ads.quoka.de +ads.rcs.it +ads.recoletos.es +ads.rediff.com +ads.redlightcenter.com +ads.redtube.com +ads.resoom.de +ads.returnpath.net +ads.s3.sitepoint.com +ads.satyamonline.com +ads.savannahnow.com +ads.saymedia.com +ads.scifi.com +ads.seniorfriendfinder.com +ads.servebom.com +ads.sexinyourcity.com +ads.shizmoo.com +ads.shopstyle.com +ads.sift.co.uk +ads.silverdisc.co.uk +ads.slim.com +ads.smartclick.com +ads.soft32.com +ads.space.com +ads.sptimes.com +ads.stackoverflow.com +ads.sun.com +ads.supplyframe.com +ads.t-online.de +ads.tahono.com +ads.techtv.com +ads.telegraph.co.uk +ads.themovienation.com +ads.thestar.com +ads.tmcs.net +ads.totallyfreestuff.com +ads.townhall.com +ads.trinitymirror.co.uk +ads.tripod.com +ads.tripod.lycos.co.uk +ads.tripod.lycos.de +ads.tripod.lycos.es +ads.tripod.lycos.it +ads.tripod.lycos.nl +ads.tripod.spray.se +ads.tso.dennisnet.co.uk +ads.uknetguide.co.uk +ads.ultimate-guitar.com +ads.uncrate.com +ads.undertone.com +ads.usatoday.com +ads.v3.com +ads.verticalresponse.com +ads.vgchartz.com +ads.videosz.com +ads.virtual-nights.com +ads.virtualcountries.com +ads.vnumedia.com +ads.waps.cn +ads.wapx.cn +ads.weather.ca +ads.web.aol.com +ads.web.cs.com +ads.web.de +ads.webmasterpoint.org +ads.websiteservices.com +ads.whi.co.nz +ads.whoishostingthis.com +ads.wiezoekje.nl +ads.wikia.nocookie.net +ads.wineenthusiast.com +ads.wwe.biz +ads.xhamster.com +ads.xtra.co.nz +ads.y-0.net +ads.yahoo.com +ads.yimg.com +ads.yldmgrimg.net +ads.yourfreedvds.com +ads.youtube.com +ads.zdnet.com +ads.ztod.com +ads03.redtube.com +ads1.canoe.ca +ads1.mediacapital.pt +ads1.msn.com +ads1.rne.com +ads1.virtual-nights.com +ads10.speedbit.com +ads180.com +ads2.brazzers.com +ads2.clearchannel.com +ads2.contentabc.com +ads2.gamecity.net +ads2.jubii.dk +ads2.net-communities.co.uk +ads2.oneplace.com +ads2.rne.com +ads2.virtual-nights.com +ads2.xnet.cz +ads2004.treiberupdate.de +ads3.contentabc.com +ads3.gamecity.net +ads3.virtual-nights.com +ads4.clearchannel.com +ads4.gamecity.net +ads4.virtual-nights.com +ads4homes.com +ads5.canoe.ca +ads5.virtual-nights.com +ads6.gamecity.net +ads7.gamecity.net +ads8.com +adsatt.abc.starwave.com +Adsatt.ABCNews.starwave.com +adsatt.espn.go.com +adsatt.espn.starwave.com +Adsatt.go.starwave.com +adsby.bidtheatre.com +adscale.de +adscholar.com +adscience.nl +adscpm.com +adsdaq.com +adsdk.com +adsend.de +adserv.evo-x.de +adserv.gamezone.de +adserv.iafrica.com +adserv.qconline.com +adserve.ams.rhythmxchange.com +adserver-live.yoc.mobi +adserver.43plc.com +adserver.71i.de +adserver.adultfriendfinder.com +adserver.aidameter.com +adserver.aol.fr +adserver.beggarspromo.com +adserver.betandwin.de +adserver.bing.com +adserver.bizhat.com +adserver.break-even.it +adserver.cams.com +adserver.com +adserver.digitoday.com +adserver.dotcommedia.de +adserver.finditquick.com +adserver.flossiemediagroup.com +adserver.freecity.de +adserver.freenet.de +adserver.friendfinder.com +adserver.hardsextube.com +adserver.hardwareanalysis.com +adserver.html.it +adserver.irishwebmasterforum.com +adserver.janes.com +adserver.libero.it +adserver.news.com.au +adserver.ngz-network.de +adserver.nydailynews.com +adserver.o2.pl +adserver.oddschecker.com +adserver.omroepzeeland.nl +adserver.pl +adserver.portalofevil.com +adserver.portugalmail.net +adserver.portugalmail.pt +adserver.sanomawsoy.fi +adserver.sciflicks.com +adserver.sharewareonline.com +adserver.spankaway.com +adserver.startnow.com +adserver.theonering.net +adserver.twitpic.com +adserver.viagogo.com +adserver.virginmedia.com +adserver.yahoo.com +adserver01.de +adserver1-images.backbeatmedia.com +adserver1.backbeatmedia.com +adserver1.mindshare.de +adserver1.ogilvy-interactive.de +adserver2.mindshare.de +adserverplus.com +adserversolutions.com +adservinginternational.com +adsfac.eu +adsfac.net +adsfac.us +adshost1.com +adside.com +adsk2.co +adskape.ru +adsklick.de +adsmarket.com +adsmart.co.uk +adsmart.com +adsmart.net +adsmogo.com +adsnative.com +adsoftware.com +adsoldier.com +adsonar.com +adspace.ro +adspeed.net +adspirit.de +adsponse.de +adsremote.scrippsnetworks.com +adsrevenue.net +adsrv.deviantart.com +adsrv.eacdn.com +adsrv.iol.co.za +adsrvr.org +adsstat.com +adstat.4u.pl +adstest.weather.com +adsupply.com +adsymptotic.com +adsynergy.com +adsys.townnews.com +adsystem.simplemachines.org +adtech.de +adtechus.com +adtegrity.net +adthis.com +adtiger.de +adtoll.com +adtology.com +adtoma.com +adtrace.org +adtrade.net +adtrading.de +adtrak.net +adtriplex.com +adultadvertising.com +adv-adserver.com +adv-banner.libero.it +adv.cooperhosting.net +adv.freeonline.it +adv.hwupgrade.it +adv.livedoor.com +adv.webmd.com +adv.wp.pl +adv.yo.cz +advariant.com +adventory.com +advert.bayarea.com +advert.dyna.ultraweb.hu +adverticum.com +adverticum.net +adverticus.de +advertise.com +advertiseireland.com +advertisespace.com +advertising.com +advertising.guildlaunch.net +advertisingbanners.com +advertisingbox.com +advertisingtag.net +advertmarket.com +advertmedia.de +advertpro.sitepoint.com +advertpro.ya.com +adverts.carltononline.com +advertserve.com +advertstream.com +advertwizard.com +advideo.uimserv.net +adview.ppro.de +advisormedia.cz +adviva.net +advnt.com +adwareremovergold.com +adwhirl.com +adwitserver.com +adworldnetwork.com +adworx.at +adworx.be +adworx.nl +adx.allstar.cz +adx.atnext.com +adxpansion.com +adxpose.com +adxvalue.com +adyea.com +adzerk.net +adzerk.s3.amazonaws.com +adzones.com +af-ad.co.uk +affbuzzads.com +affili.net +affiliate.1800flowers.com +affiliate.doubleyourdating.com +affiliate.dtiserv.com +affiliate.gamestop.com +affiliate.mercola.com +affiliate.mogs.com +affiliate.offgamers.com +affiliate.travelnow.com +affiliate.viator.com +affiliatefuel.com +affiliatefuture.com +affiliates.allposters.com +affiliates.babylon.com +affiliates.digitalriver.com +affiliates.globat.com +affiliates.internationaljock.com +affiliates.streamray.com +affiliates.thinkhost.net +affiliates.thrixxx.com +affiliates.ultrahosting.com +affiliatetracking.com +affiliatetracking.net +affiliatewindow.com +affiliation-france.com +afftracking.justanswer.com +ah-ha.com +ahalogy.com +aidu-ads.de +aim4media.com +aistat.net +aktrack.pubmatic.com +alclick.com +alenty.com +alexa-sitestats.s3.amazonaws.com +alipromo.com +all4spy.com +alladvantage.com +allosponsor.com +amazingcounters.com +amazon-adsystem.com +americash.com +amung.us +an.tacoda.net +anahtars.com +analytics.adpost.org +analytics.google.com +analytics.live.com +analytics.yahoo.com +anm.intelli-direct.com +annonser.dagbladet.no +api.intensifier.de +apture.com +arc1.msn.com +arcadebanners.com +ard.xxxblackbook.com +are-ter.com +as.webmd.com +as1.advfn.com +assets1.exgfnetwork.com +assoc-amazon.com +at-adserver.alltop.com +atdmt.com +athena-ads.wikia.com +atwola.com +auctionads.com +auctionads.net +audience2media.com +audit.median.hu +audit.webinform.hu +auto-bannertausch.de +autohits.dk +avenuea.com +avpa.javalobby.org +avres.net +avsads.com +awempire.com +awin1.com +azfront.com +b-1st.com +b.aol.com +b.engadget.com +ba.afl.rakuten.co.jp +babs.tv2.dk +backbeatmedia.com +banik.redigy.cz +banner-exchange-24.de +banner.ad.nu +banner.ambercoastcasino.com +banner.blogranking.net +banner.buempliz-online.ch +banner.casino.net +banner.casinodelrio.com +banner.cotedazurpalace.com +banner.coza.com +banner.cz +banner.easyspace.com +banner.elisa.net +banner.eurogrand.com +banner.featuredusers.com +banner.getgo.de +banner.goldenpalace.com +banner.img.co.za +banner.inyourpocket.com +banner.kiev.ua +banner.linux.se +banner.media-system.de +banner.mindshare.de +banner.nixnet.cz +banner.noblepoker.com +banner.northsky.com +banner.orb.net +banner.penguin.cz +banner.rbc.ru +banner.relcom.ru +banner.tanto.de +banner.titan-dsl.de +banner.vadian.net +banner.webmersion.com +banner.wirenode.com +bannerads.de +bannerboxes.com +bannercommunity.de +bannerconnect.com +bannerconnect.net +bannerexchange.cjb.net +bannerflow.com +bannergrabber.internet.gr +bannerhost.com +bannerimage.com +bannerlandia.com.ar +bannermall.com +bannermarkt.nl +bannerpower.com +banners.adultfriendfinder.com +banners.amigos.com +banners.asiafriendfinder.com +banners.audioholics.com +banners.babylon-x.com +banners.bol.com.br +banners.cams.com +banners.clubseventeen.com +banners.czi.cz +banners.dine.com +banners.direction-x.com +banners.directnic.com +banners.easydns.com +banners.freett.com +banners.friendfinder.com +banners.getiton.com +banners.iq.pl +banners.isoftmarketing.com +banners.lifeserv.com +banners.linkbuddies.com +banners.passion.com +banners.resultonline.com +banners.sexsearch.com +banners.sys-con.com +banners.thomsonlocal.com +banners.videosz.com +banners.virtuagirlhd.com +banners.wunderground.com +bannerserver.com +bannersgomlm.com +bannershotlink.perfectgonzo.com +bannersng.yell.com +bannerspace.com +bannerswap.com +bannertesting.com +bannery.cz +bannieres.acces-contenu.com +bans.adserver.co.il +bans.bride.ru +barnesandnoble.bfast.com +basebanner.com +baypops.com +bbelements.com +bbn.img.com.ua +begun.ru +belstat.com +belstat.nl +berp.com +best-pr.info +best-top.ro +bestsearch.net +bhclicks.com +bidclix.com +bidclix.net +bidswitch.net +bidtrk.com +bidvertiser.com +bigbangmedia.com +bigclicks.com +billboard.cz +bitads.net +bitmedianetwork.com +bizad.nikkeibp.co.jp +bizrate.com +blast4traffic.com +blingbucks.com +blogads.com +blogcounter.de +blogherads.com +blogrush.com +blogtoplist.se +blogtopsites.com +blueadvertise.com +bluekai.com +bluelithium.com +bluewhaleweb.com +bm.annonce.cz +bn.bfast.com +boersego-ads.de +boldchat.com +boom.ro +boomads.com +boost-my-pr.de +box.anchorfree.net +bpath.com +braincash.com +brandreachsys.com +bravenet.com.invalid +bridgetrack.com +brightinfo.com +british-banners.com +bs.yandex.ru +bttrack.com +budsinc.com +bullseye.backbeatmedia.com +buyhitscheap.com +buysellads.com +buzzonclick.com +bvalphaserver.com +bwp.download.com +c.bigmir.net +c1.nowlinux.com +c1exchange.com +campaign.bharatmatrimony.com +caniamedia.com +carbonads.com +carbonads.net +casalemedia.com +casalmedia.com +cash4members.com +cash4popup.de +cashcrate.com +cashengines.com +cashfiesta.com +cashlayer.com +cashpartner.com +casinogames.com +casinopays.com +casinorewards.com +casinotraffic.com +casinotreasure.com +cbanners.virtuagirlhd.com +cbmall.com +cdn.freefacti.com +cdn.freefarcy.com +cecash.com +centerpointmedia.com +ceskydomov.alias.ngs.modry.cz +cetrk.com +cgicounter.puretec.de +ch.questionmarket.com +chameleon.ad +channelintelligence.com +chart.dk +chartbeat.com +chartbeat.net +checkm8.com +checkstat.nl +chestionar.ro +chitika.net +cibleclick.com.invalid +cityads.telus.net +cj.com +cjbmanagement.com +cjlog.com +claria.com +class-act-clicks.com +click.absoluteagency.com +click.fool.com +click.kmindex.ru +click2freemoney.com +click2paid.com +clickability.com +clickadz.com +clickagents.com +clickbank.com +clickbank.net +clickbooth.com +clickboothlnk.com +clickbrokers.com +clickcompare.co.uk +clickdensity.com +clickedyclick.com +clickhereforcellphones.com +clickhouse.com +clickhype.com +clicklink.jp +clickmedia.ro +clickonometrics.pl +clicks.equantum.com +clicks.mods.de +clickserve.cc-dt.com +clicksor.com +clicktag.de +clickthruserver.com +clickthrutraffic.com +clicktrace.info +clicktrack.ziyu.net +clicktracks.com +clicktrade.com +clickxchange.com +clickz.com +clickzxc.com +clicmanager.fr +clientmetrics-pa.googleapis.com +clients.tbo.com +clixgalore.com +clk.konflab.com +clkads.com +clkrev.com +cluster.adultworld.com +clustrmaps.com +cmpstar.com +cnomy.com +cnt.spbland.ru +cnt1.pocitadlo.cz +code-server.biz +colonize.com +comclick.com +commindo-media-ressourcen.de +commissionmonster.com +compactbanner.com +comprabanner.it +confirmed-profits.com +connextra.com +contaxe.de +content.acc-hd.de +content.ad +contextweb.com +conversantmedia.com +conversionruler.com +cookies.cmpnet.com +coremetrics.com +count.rbc.ru +count.rin.ru +count.west263.com +counted.com +counter.bloke.com +counter.cnw.cz +counter.cz +counter.dreamhost.com +counter.fateback.com +counter.mirohost.net +counter.mojgorod.ru +counter.nowlinux.com +counter.rambler.ru +counter.search.bg +counter.sparklit.com +counter.yadro.ru +counters.honesty.com +counting.kmindex.ru +counts.tucows.com +coupling-media.de +cpalead.com +cpays.com +cpmaffiliation.com +cpmstar.com +cpxinteractive.com +cqcounter.com +crakmedia.com +craktraffic.com +crawlability.com +crazypopups.com +creafi-online-media.com +creative.whi.co.nz +creatives.as4x.tmcs.net +creatives.livejasmin.com +crispads.com +criteo.com +crowdgravity.com +crtv.mate1.com +crwdcntrl.net +ctnetwork.hu +cubics.com +customad.cnn.com +cyberbounty.com +cybermonitor.com +d.adroll.com +dakic-ia-300.com +danban.com +dapper.net +datashreddergold.com +dbbsrv.com +dc-storm.com +de17a.com +dealdotcom.com +debtbusterloans.com +decknetwork.net +deloo.de +demandbase.com +demdex.net +di1.shopping.com +dialerporn.com +didtheyreadit.com +direct-xxx-access.com +directaclick.com +directivepub.com +directleads.com +directorym.com +directtrack.com +discountclick.com +displayadsmedia.com +dist.belnk.com +dmtracker.com +dmtracking.alibaba.com +dmtracking2.alibaba.com +dnads.directnic.com +domaining.in +domainsponsor.com +domainsteam.de +domdex.com +doubleclick.com +doubleclick.de +doubleclick.net +doublepimp.com +drumcash.com +dynamic.fmpub.net +e-adimages.scrippsnetworks.com +e-bannerx.com +e-debtconsolidation.com +e-m.fr +e-n-t-e-r-n-e-x.com +e-planning.net +e.kde.cz +eadexchange.com +eas.almamedia.fi +easyhits4u.com +ebayadvertising.com +ebocornac.com +ebuzzing.com +ecircle-ag.com +eclick.vn +ecoupons.com +edgeio.com +effectivemeasure.com +effectivemeasure.net +eiv.baidu.com +elitedollars.com +elitetoplist.com +emarketer.com +emediate.dk +emediate.eu +engine.espace.netavenir.com +enginenetwork.com +enoratraffic.com +enquisite.com +entercasino.com +entrecard.s3.amazonaws.com +eqads.com +ero-advertising.com +esellerate.net +estat.com +etahub.com +etargetnet.com +etracker.de +eu-adcenter.net +eu1.madsone.com +eur.a1.yimg.com +eurekster.com +euroclick.com +euros4click.de +eusta.de +evergage.com +evidencecleanergold.com +ewebcounter.com +exchange-it.com +exchange.bg +exchangead.com +exchangeclicksonline.com +exelator.com +exit76.com +exitexchange.com +exitfuel.com +exoclick.com +exogripper.com +experteerads.com +exponential.com +express-submit.de +extractorandburner.com +extreme-dm.com +extremetracking.com +eyeblaster.com +eyereturn.com +eyeviewads.com +eyewonder.com +ezula.com +f5biz.com +fast-adv.it +fastclick.com +fastclick.com.edgesuite.net +fastclick.net +fb-promotions.com +fc.webmasterpro.de +feedbackresearch.com +feedjit.com +ffxcam.fairfax.com.au +fimc.net +fimserve.com +findcommerce.com +findyourcasino.com +fineclicks.com +first.nova.cz +firstlightera.com +flashtalking.com +fleshlightcash.com +flexbanner.com +flowgo.com +flurry.com +fonecta.leiki.com +foo.cosmocode.de +forex-affiliate.net +fpctraffic.com +fpctraffic2.com +fragmentserv.iac-online.de +free-banners.com +freebanner.com +freelogs.com +freeonlineusers.com +freepay.com +freestats.com +freestats.tv +freewebcounter.com +funklicks.com +funpageexchange.com +fusionads.net +fusionquest.com +fxstyle.net +galaxien.com +game-advertising-online.com +gamehouse.com +gamesites100.net +gamesites200.com +gamesitestop100.com +gator.com +gbanners.hornymatches.com +gemius.pl +geo.digitalpoint.com +geobanner.adultfriendfinder.com +geovisite.com +getclicky.com +globalismedia.com +globaltakeoff.net +globaltrack.com.invalid +globe7.com +globus-inter.com +gmads.net +go-rank.de +goingplatinum.com +goldstats.com +google-analytics.com +googleadservices.com +googleads.g.doubleclick.net +googlesyndication.com +gostats.com +gp.dejanews.com +gpr.hu +grafstat.ro +grapeshot.co.uk +greystripe.com +gtop100.com +gunggo.com +harrenmedia.com +harrenmedianetwork.com +havamedia.net +heias.com +hentaicounter.com +herbalaffiliateprogram.com +hexusads.fluent.ltd.uk +heyos.com +hgads.com +hidden.gogoceleb.com +hightrafficads.com +histats.com +hit-parade.com +hit.bg +hit.ua +hit.webcentre.lycos.co.uk +hitbox.com +hitcents.com +hitfarm.com +hitiz.com +hitlist.ru +hitlounge.com +hitometer.com +hits.europuls.eu +hits.informer.com +hits.puls.lv +hits.theguardian.com +hits4me.com +hits4pay.com +hitslink.com +hittail.com +hollandbusinessadvertising.nl +homepageking.de +hostedads.realitykings.com +hotjar.com +hotkeys.com +hotlog.ru +hotrank.com.tw +hs-analytics.net +htmlhubing.xyz +httpool.com +hurricanedigitalmedia.com +hydramedia.com +hyperbanner.net +hypertracker.com +i-clicks.net +i.xx.openx.com +i1img.com +i1media.no +ia.iinfo.cz +iad.anm.co.uk +iadnet.com +iasds01.com +iconadserver.com +icptrack.com +idcounter.com +identads.com +idregie.com +idtargeting.com +ientrymail.com +iesnare.com +ifa.tube8live.com +ilbanner.com +ilead.itrack.it +ilovecheating.com +imageads.canoe.ca +imagecash.net +images-pw.secureserver.net +images.v3.com +imarketservices.com +img.prohardver.hu +imgpromo.easyrencontre.com +imonitor.nethost.cz +imprese.cz +impressionmedia.cz +impressionz.co.uk +imrworldwide.com +inboxdollars.com +incentaclick.com +indexstats.com +indieclick.com +industrybrains.com +inetlog.ru +infinite-ads.com +infinityads.com +infolinks.com +information.com +inringtone.com +insightexpress.com +insightexpressai.com +instantmadness.com +intelliads.com +intellitxt.com +interactive.forthnet.gr +intergi.com +internetfuel.com +interreklame.de +interstat.hu +ip.ro +ip193.cn +iperceptions.com +ipro.com +ireklama.cz +itfarm.com +itop.cz +its-that-easy.com +itsptp.com +jcount.com +jinkads.de +joetec.net +js.users.51.la +juicyads.com +jumptap.com +justrelevant.com +justwebads.com +k.iinfo.cz +kanoodle.com +keymedia.hu +kindads.com +kissmetrics.com +kliks.nl +kniverto.com +komoona.com +kompasads.com +kontera.com +kt-g.de +ktu.sv2.biz +lakequincy.com +launchbit.com +layer-ad.de +layer-ads.de +lbn.ru +lct.salesforce.com +lead-analytics.nl +leadboltads.net +leadclick.com +leadingedgecash.com +leadzupc.com +levelrate.de +lfstmedia.com +liftdna.com +ligatus.com +ligatus.de +lightningcast.net +lightspeedcash.com +link-booster.de +link4ads.com +linkadd.de +linkbuddies.com +linkexchange.com +linkprice.com +linkrain.com +linkreferral.com +links-ranking.de +linkshighway.com +linkstorms.com +linkswaper.com +linktarget.com +liquidad.narrowcastmedia.com +liveintent.com +liverail.com +loading321.com +log.btopenworld.com +logua.com +lop.com +lucidmedia.com +lzjl.com +m.webtrends.com +m1.webstats4u.com +m4n.nl +mackeeperapp.mackeeper.com +madclient.uimserv.net +madisonavenue.com +mads.cnet.com +madvertise.de +marchex.com +market-buster.com +marketing.888.com +marketing.hearstmagazines.nl +marketing.nyi.net +marketing.osijek031.com +marketingsolutions.yahoo.com +maroonspider.com +mas.sector.sk +mastermind.com +matchcraft.com +mathtag.com +max.i12.de +maximumcash.com +mbn.com.ua +mbs.megaroticlive.com +mbuyu.nl +mdotm.com +measuremap.com +media-adrunner.mycomputer.com +media-servers.net +media.ftv-publicite.fr +media.funpic.de +media6degrees.com +mediaarea.eu +mediacharger.com +mediadvertising.ro +mediageneral.com +mediamath.com +mediamgr.ugo.com +mediaplazza.com +mediaplex.com +mediascale.de +mediatext.com +mediax.angloinfo.com +mediaz.angloinfo.com +medleyads.com +medyanetads.com +megacash.de +megago.com +megastats.com +megawerbung.de +metaffiliation.com +metanetwork.com +methodcash.com +metrics.cnn.com +metrics.windowsitpro.com +mgid.com +miarroba.com +microstatic.pl +microticker.com +midnightclicking.com +misstrends.com +mixpanel.com +mixtraffic.com +mjxads.internet.com +mlm.de +mmismm.com +mmtro.com +moatads.com +mobclix.com +mocean.mobi +moneyexpert.com +monsterpops.com +mopub.com +mouseflow.com +mpstat.us +mr-rank.de +mrskincash.com +mtree.com +musiccounter.ru +muwmedia.com +myaffiliateprogram.com +mybloglog.com +mycounter.ua +mymoneymakingapp.com +mypagerank.net +mypagerank.ru +mypowermall.com +mystat-in.net +mystat.pl +mytop-in.net +n69.com +naiadsystems.com.invalid +naj.sk +namimedia.com +nastydollars.com +navigator.io +navrcholu.cz +nbjmp.com +ndparking.com +nedstat.com +nedstat.nl +nedstatbasic.net +nedstatpro.net +nend.net +neocounter.neoworx-blog-tools.net +neoffic.com +net-filter.com +netaffiliation.com +netagent.cz +netclickstats.com +netcommunities.com +netdirect.nl +netincap.com +netpool.netbookia.net +netshelter.net +neudesicmediagroup.com +newads.bangbros.com +newbie.com +newnet.qsrch.com +newnudecash.com +newopenx.detik.com +newt1.adultadworld.com +newt1.adultworld.com +newtopsites.com +ng3.ads.warnerbros.com +ngs.impress.co.jp +nitroclicks.com +novem.pl +nuggad.net +numax.nu-1.com +nuseek.com +oas.benchmark.fr +oas.foxnews.com +oas.repubblica.it +oas.roanoke.com +oas.salon.com +oas.toronto.com +oas.uniontrib.com +oas.villagevoice.com +oascentral.businessweek.com +oascentral.chicagobusiness.com +oascentral.fortunecity.com +oascentral.register.com +oewa.at +oewabox.at +offerforge.com +offermatica.com +olivebrandresponse.com +omniture.com +onclasrv.com +onclickads.net +oneandonlynetwork.com +onenetworkdirect.com +onestat.com +onestatfree.com +online-metrix.net +onlinecash.com +onlinecashmethod.com +onlinerewardcenter.com +openad.tf1.fr +openad.travelnow.com +openads.friendfinder.com +openads.org +openx.angelsgroup.org.uk +openx.blindferret.com +opienetwork.com +optimost.com +optmd.com +ordingly.com +ota.cartrawler.com +otto-images.developershed.com +outbrain.com +overture.com +owebmoney.ru +oxado.com +oxcash.com +oxen.hillcountrytexas.com +p.adpdx.com +pagead.l.google.com +pagefair.com +pagerank-ranking.de +pagerank-submitter.de +pagerank-united.de +pagerank4you.com +pageranktop.com +pagead2.googlesyndication.com +parse.ly.invalid +parsely.com +partage-facile.com +partner-ads.com +partner.pelikan.cz +partner.topcities.com +partnerad.l.google.com +partnercash.de +partners.priceline.com +passion-4.net +pay-ads.com +paycounter.com +paypopup.com +payserve.com +pbnet.ru +pcash.imlive.com +peep-auktion.de +peer39.com +pennyweb.com +pepperjamnetwork.com +percentmobile.com +perfectaudience.com +perfiliate.com +performancerevenue.com +performancerevenues.com +performancing.com +pgmediaserve.com +pgpartner.com +pheedo.com +phoenix-adrunner.mycomputer.com +phpadsnew.new.natuurpark.nl +phpmyvisites.net +picadmedia.com +pillscash.com +pimproll.com +pixel.adsafeprotected.com +pixel.jumptap.com +pixel.redditmedia.com +play4traffic.com +playhaven.com +plista.com +plugrush.com +pointroll.com +pop-under.ru +popads.net +popub.com +popunder.ru +popup.msn.com +popupmoney.com +popupnation.com +popups.infostart.com +popuptraffic.com +porngraph.com +porntrack.com +postrelease.com +potenza.cz +pr-ten.de +praddpro.de +prchecker.info +precisioncounter.com +predictad.com +primaryads.com +primetime.net +privatecash.com +pro-advertising.com +pro.i-doctor.co.kr +proext.com +profero.com +projectwonderful.com +promo.badoink.com +promo.ulust.com +promo1.webcams.nl +promobenef.com +promos.fling.com +promote.pair.com +promotion-campaigns.com +pronetadvertising.com +propellerads.com +proranktracker.com +proton-tm.com +protraffic.com +provexia.com +prsitecheck.com +psstt.com +pub.chez.com +pub.club-internet.fr +pub.hardware.fr +pub.realmedia.fr +pubdirecte.com +publicidad.elmundo.es +pubmatic.com +pubs.lemonde.fr +pulse360.com +q.azcentral.com +qctop.com +qnsr.com +quantcast.com +quantserve.com +quarterserver.de +questaffiliates.net +quigo.com +quinst.com +quisma.com +rad.msn.com +radar.cedexis.com +radarurl.com +radiate.com +rampidads.com +rank-master.com +rank-master.de +rankchamp.de +ranking-charts.de +ranking-hits.de +ranking-id.de +ranking-links.de +ranking-liste.de +ranking-street.de +rankingchart.de +rankingscout.com +rankyou.com +rapidcounter.com +rate.ru +ratings.lycos.com +rb1.design.ru +re-directme.com +reachjunction.com +reactx.com +readserver.net +realcastmedia.com +realclix.com +realmedia-a800.d4p.net +realtechnetwork.com +realtracker.com +reduxmedia.com +reedbusiness.com.invalid +referralware.com +regnow.com +reinvigorate.net +reklam.rfsl.se +reklama.mironet.cz +reklama.reflektor.cz +reklamcsere.hu +reklame.unwired-i.net +reklamer.com.ua +relevanz10.de +relmaxtop.com +remotead.cnet.com +republika.onet.pl +retargeter.com +revenue.net +revenuedirect.com +revsci.net +revstats.com +richmails.com +richmedia.yimg.com +richwebmaster.com +rightstats.com +rlcdn.com +rle.ru +rmads.msn.com +rmedia.boston.com +roar.com +robotreplay.com +roia.biz +rok.com.com +rose.ixbt.com +rotabanner.com +roxr.net +rtbpop.com +rtbpopd.com +ru-traffic.com +ru4.com +rubiconproject.com +s.adroll.com +s2d6.com +sageanalyst.net +sail-horizon.com +samsungacr.com +samsungads.com +sbx.pagesjaunes.fr +scambiobanner.aruba.it +scanscout.com +scopelight.com +scorecardresearch.com +scratch2cash.com +scripte-monster.de +searchfeast.com +searchmarketing.com +searchramp.com +secure.webconnect.net +sedoparking.com +sedotracker.com +seeq.com.invalid +sensismediasmart.com.au +seo4india.com +serv0.com +servedby-buysellads.com +servedbyadbutler.com +servedbyopenx.com +servethis.com +services.hearstmags.com +serving-sys.com +sexaddpro.de +sexadvertentiesite.nl +sexcounter.com +sexinyourcity.com +sexlist.com +sextracker.com +sexystat.com +shareadspace.com +shareasale.com +sharepointads.com +sher.index.hu +shinystat.com +shinystat.it +shoppingads.com +siccash.com +sidebar.angelfire.com +sinoa.com +sitemeter.com +sitestat.com +sixsigmatraffic.com +skimresources.com +skylink.vn +slickaffiliate.com +slopeaota.com +smart4ads.com +smartadserver.com +smowtion.com +snapads.com +snoobi.com +socialspark.com +softclick.com.br +spacash.com +sparkstudios.com +specificmedia.co.uk +specificpop.com +spezialreporte.de +spinbox.techtracker.com +spinbox.versiontracker.com +sponsorads.de +sponsorpro.de +sponsors.thoughtsmedia.com +spot.fitness.com +spotxchange.com +spylog.com +spywarelabs.com +spywarenuker.com +spywords.com +srwww1.com +starffa.com +start.freeze.com +stat.cliche.se +stat.dealtime.com +stat.dyna.ultraweb.hu +stat.pl +stat.webmedia.pl +stat.zenon.net +stat24.com +stat24.meta.ua +statcounter.com +static.fmpub.net +static.itrack.it +staticads.btopenworld.com +statistik-gallup.net +statm.the-adult-company.com +stats.blogger.com +stats.cts-bv.nl +stats.directnic.com +stats.hyperinzerce.cz +stats.mirrorfootball.co.uk +stats.multiup.org +stats.olark.com +stats.self.com +stats.townnews.com +stats.unwired-i.net +stats.wordpress.com +stats.x14.eu +stats2.self.com +stats4all.com +statsie.com +statxpress.com +steelhouse.com +steelhousemedia.com +stickyadstv.com +suavalds.com +subscribe.hearstmags.com +sugoicounter.com +sumo.com +sumome.com +superclix.de +superstats.com +supertop.ru +supertop100.com +suptullog.com +surfmusik-adserver.de +swan-swan-goose.com +swissadsolutions.com +swordfishdc.com +sx.trhnt.com +t.insigit.com +t.pusk.ru +taboola.com +tacoda.net +tagular.com +tailsweep.co.uk +tailsweep.com +tailsweep.se +takru.com +tangerinenet.biz +tapad.com +targad.de +targetingnow.com +targetnet.com +targetpoint.com +tatsumi-sys.jp +tcads.net +tpc.googlesyndication.com +teads.tv +techclicks.net +teenrevenue.com +teliad.de +text-link-ads.com +textad.sexsearch.com +textads.biz +textads.opera.com +textlinks.com +tfag.de +theadhost.com +theads.me +thebugs.ws +thecounter.com +therapistla.com +therichkids.com +thrnt.com +thruport.com +tinybar.com +tizers.net +tlvmedia.com +tntclix.co.uk +top-casting-termine.de +top-site-list.com +top.list.ru +top.mail.ru +top.proext.com +top100-images.rambler.ru +top100.mafia.ru +top123.ro +top20.com.invalid +top20free.com +top90.ro +topbarh.box.sk +topbucks.com +topforall.com +topgamesites.net +toplist.cz +toplist.pornhost.com +toplista.mw.hu +toplistcity.com +topmmorpgsites.com.invalid +topping.com.ua +toprebates.com +topsafelist.net +topsearcher.com +topsir.com +topsite.lv +topsites.com.br +topstats.com +totemcash.com +touchclarity.com +touchclarity.natwest.com +tour.brazzers.com +tpnads.com +track.adform.net +track.anchorfree.com +track.gawker.com +trackalyzer.com +tracker.icerocket.com +tracker.marinsm.com +tracking.crunchiemedia.com +tracking.gajmp.com +tracking.internetstores.de +tracking.yourfilehost.com +tracking101.com +trackingsoft.com +trackmysales.com +tradeadexchange.com +tradedoubler.com +traffic-exchange.com +traffic.liveuniversenetwork.com +trafficadept.com +trafficbalancerouting.com +trafficcdn.liveuniversenetwork.com +trafficfactory.biz +trafficholder.com +traffichunt.com +trafficjunky.net +trafficleader.com +trafficsecrets.com +trafficspaces.net +trafficstrategies.com +trafficswarm.com +traffictrader.net +trafficz.com +trafficz.net +traffiq.com +trafic.ro +travis.bosscasinos.com +trekblue.com +trekdata.com +trendcounter.com +trendmd.com +trhunt.com +tribalfusion.com +trix.net +truehits.net +truehits1.gits.net.th +truehits2.gits.net.th +tsms-ad.tsms.com +tubemogul.com +turn.com +tvmtracker.com +twittad.com +tyroo.com +uarating.com +ukbanners.com +ultramercial.com +unanimis.co.uk +untd.com +updated.com +urlcash.net +us.a1.yimg.com +usapromotravel.com +usmsad.tom.com +utarget.co.uk +utils.mediageneral.net +v1.cnzz.com +validclick.com +valuead.com +valueclick.com +valueclickmedia.com +valuecommerce.com +valuesponsor.com +veille-referencement.com +ventivmedia.com +vericlick.com +vertadnet.com +veruta.com +vervewireless.com +vibrantmedia.com +video-stats.video.google.com +videoegg.com +view4cash.de +viewpoint.com +visistat.com +visit.webhosting.yahoo.com +visitbox.de +visual-pagerank.fr +visualrevenue.com +voicefive.com +vpon.com +vrs.cz +vs.tucows.com +vungle.com +warlog.ru +wdads.sx.atl.publicus.com +web-stat.com +web.informer.com +web2.deja.com +webads.co.nz +webads.nl +webangel.ru +webcash.nl +webcounter.cz +webcounter.goweb.de +webgains.com +webmaster-partnerprogramme24.de +webmasterplan.com +webmasterplan.de +weborama.fr +webpower.com +webreseau.com +webseoanalytics.com +websponsors.com +webstat.channel4.com +webstat.com +webstat.net +webstats4u.com +webtrackerplus.com +webtraffic.se +webtraxx.de +webtrendslive.com +werbung.meteoxpress.com +wetrack.it +whaleads.com +whenu.com +whispa.com +whoisonline.net +wholesaletraffic.info +widespace.com +widgetbucks.com +wikia-ads.wikia.com +window.nixnet.cz +wintricksbanner.googlepages.com +witch-counter.de +wlmarketing.com +wmirk.ru +wonderlandads.com +wondoads.de +woopra.com +worldwide-cash.net +wtlive.com +www-banner.chat.ru +www-google-analytics.l.google.com +www.banner-link.com.br +www.dnps.com +www.kaplanindex.com +www.money4exit.de +www.photo-ads.co.uk +www1.gto-media.com +www8.glam.com +wwwpromoter.com +x-traceur.com +x6.yakiuchi.com +xchange.ro +xclicks.net +xertive.com +xg4ken.com +xiti.com +xplusone.com +xponsor.com +xq1.net +xrea.com +xtendmedia.com +xtremetop100.com +xxxcounter.com +xxxmyself.com +y.ibsys.com +yab-adimages.s3.amazonaws.com +yabuka.com +yadro.ru +yesads.com +yesadvertising.com +yieldads.com +yieldlab.net +yieldmanager.com +yieldmanager.net +yieldmo.com +yieldtraffic.com +yoc.mobi +yoggrt.com +z5x.net +zangocash.com +zanox-affiliate.de +zanox.com +zantracker.com +zedo.com +zencudo.co.uk +zenkreka.com +zenzuu.com +zeus.developershed.com +zeusclicks.com +zintext.com +zmedia.com +zv1.november-lax.com \ No newline at end of file diff --git a/app/src/web/assets/css/components/round_icons.css b/app/src/web/assets/css/components/round_icons.css new file mode 100644 index 00000000..c765d2ab --- /dev/null +++ b/app/src/web/assets/css/components/round_icons.css @@ -0,0 +1,4 @@ +#threadlist_rows, [role*=presentation] img._1e_c, +i.img.profpic:not(._1_0m), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) { + border-radius: 50% !important; +} diff --git a/app/src/web/assets/css/components/round_icons.scss b/app/src/web/assets/css/components/round_icons.scss new file mode 100644 index 00000000..c00fe1bf --- /dev/null +++ b/app/src/web/assets/css/components/round_icons.scss @@ -0,0 +1,4 @@ +#threadlist_rows, [role*=presentation] img._1e_c, +i.img.profpic:not(._1_0m), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) { + border-radius: 50% !important; +} diff --git a/app/src/web/assets/css/core/_base.scss b/app/src/web/assets/css/core/_base.scss new file mode 100644 index 00000000..472319fe --- /dev/null +++ b/app/src/web/assets/css/core/_base.scss @@ -0,0 +1,107 @@ +@mixin placeholder { + ::-webkit-input-placeholder { + @content; + } + + :-moz-placeholder { + @content; + } + + ::-moz-placeholder { + @content; + } + + :-ms-input-placeholder { + @content; + } +} + +@mixin keyframes($name) { + @-webkit-keyframes #{$name} { + @content; + } + + @-moz-keyframes #{$name} { + @content; + } + + //@-ms-keyframes #{$name} { + // @content; + //} + + @keyframes #{$name} { + @content; + } +} + +// Helper function to replace characters in a string +@function str-replace($string, $search, $replace: "") { + $index: str-index($string, $search); + + @return if($index, str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace), $string); +} + +// https://css-tricks.com/probably-dont-base64-svg/ +// SVG optimization thanks to https://codepen.io/jakob-e/pen/doMoML +// Function to create an optimized svg url +// Version: 1.0.6 +@function svg-url($svg) { + // + // Add missing namespace + // + @if not str-index($svg, xmlns) { + $svg: str-replace($svg, "", "%3E"); + + // + // The maybe list + // + // Keep size and compile time down + // ... only add on documented fail + // + // $chunk: str-replace($chunk, '&', '%26'); + // $chunk: str-replace($chunk, '|', '%7C'); + // $chunk: str-replace($chunk, '[', '%5B'); + // $chunk: str-replace($chunk, ']', '%5D'); + // $chunk: str-replace($chunk, '^', '%5E'); + // $chunk: str-replace($chunk, '`', '%60'); + // $chunk: str-replace($chunk, ';', '%3B'); + // $chunk: str-replace($chunk, '?', '%3F'); + // $chunk: str-replace($chunk, ':', '%3A'); + // $chunk: str-replace($chunk, '@', '%40'); + // $chunk: str-replace($chunk, '=', '%3D'); + + $encoded: #{$encoded}#{$chunk}; + $index: $index + $slice; + } + + @return url("data:image/svg+xml,#{$encoded}"); +} + +// Background svg mixin +@mixin background-svg($svg, $extra: "no-repeat") { + background: svg-url($svg) unquote($extra) !important; +} diff --git a/app/src/web/assets/css/core/_colors.scss b/app/src/web/assets/css/core/_colors.scss new file mode 100644 index 00000000..1411a857 --- /dev/null +++ b/app/src/web/assets/css/core/_colors.scss @@ -0,0 +1,18 @@ +$bg_transparent: rgba(#f0f, 0.02) !default; + +//Keep above as first line so partials aren't compiled +//Our default colors are test colors; production files should always import the actual colors + +$text: #d7b0d7 !default; +// must be visible with accent as the background +$accent_text: #76d7c2 !default; +$link: #9266d5 !default; +$accent: #3b5998 !default; +$background: #451515 !default; +// background2 must be transparent +$background2: rgba(lighten($background, 35%), 0.35) !default; //Also change ratio in material_light +$bg_opaque: rgba($background, 1.0) !default; +$bg_opaque2: rgba($background2, 1.0) !default; +$card: #239645 !default; +$tint: #ff4682 !default; // must be different from $background +$divider: rgba($text, 0.3) !default; diff --git a/app/src/web/assets/css/core/_core_bg.scss b/app/src/web/assets/css/core/_core_bg.scss new file mode 100644 index 00000000..21c20bcc --- /dev/null +++ b/app/src/web/assets/css/core/_core_bg.scss @@ -0,0 +1,86 @@ +#viewport { + background: $background !important; +} + +body, :root, #root, #header, #MComposer, [style*="background-color"], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, +._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, +._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, +._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, +._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, +._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, +.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, +.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, +._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, +._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, +._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, +._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, +._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, +._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, +.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, +._ue6, ._hdn._hdn, +._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, +._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, +._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, +._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, +._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { + background: $bg_transparent !important; +} + +//card related +._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { + background: $card !important; +} + +// unread related + +.aclb { + background: $tint !important; +} + +//contains images so must have background-color +._cv_, ._2sq8 { + background-color: $bg_transparent !important; +} + +#page, ._8l7, ._-j8, ._-j9, ._6o5v { + background: transparent !important; +} + +.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, +.mentions-suggest, ._1xoz, ._1xow { + background: $bg_opaque !important; +} + +._403n, ._14v5 ._14v8, ._1-kc { + background: $bg_opaque2 !important; +} + +button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, +._590n, ._4g8h, ._2cpp, ._58a0.touched:after, +.timeline .timelinePublisher, .touched, .sharerAttachment, +.item a.primary.touched .primarywrap, ._38nq, ._537a, +._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, +.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, +._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, +._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, +._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, +._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, +#addMembersTypeahead .mToken.mTokenWeakReference, +.acbk { + background: $background2 !important; +} + +.mQuestionsPollResultsBar .shaded { + background: $accent !important; +} + +._220g, ._1_y8:after, ._6pk6, +._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, +._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { + background: $divider !important; +} + +//fab +button ._v89 ._54k8._1fl1 { + background: $accent !important; +} \ No newline at end of file diff --git a/app/src/web/assets/css/core/_core_border.scss b/app/src/web/assets/css/core/_core_border.scss new file mode 100644 index 00000000..c366bc14 --- /dev/null +++ b/app/src/web/assets/css/core/_core_border.scss @@ -0,0 +1,94 @@ +//border between like and comment +._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, +._5j35::after, ._2k4b, ._3to7, ._4nw8 { + border-left: 1px solid $divider !important; +} + +._4_d1, ._5cni { + border-right: 1px solid $divider !important; +} + +//above see more +._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, +._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, +._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, +._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, +._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { + border-top: 1px solid $divider !important; +} + +._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, +._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, +._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, +._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, +.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, +._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, +.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, +._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, +._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, +._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, +._5fjw > :first-child { + border-bottom: 1px solid $divider !important; +} + +.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, +._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { + border-top: 1px solid $divider !important; + border-bottom: 1px solid $divider !important; +} + +//friend card border +._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, +.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, +._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, +._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, +._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, +._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, +.home-notification .touchable.touched, ._6beo ._6ber, +._73ku ._73jw, +._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, +._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { + border: 1px solid $divider !important; +} + +.mQuestionsPollResultsBar .shaded, ._1027._13sm { + border: 1px solid $text !important; +} + +._3gka { + border: 1px dashed $divider !important; +} + +//link card bottom border +._4o58::after, .acr, ._t21, ._2bdb, +.acw, .aclb, ._4qax, ._5h8f { + border-color: $divider !important; +} + +// like, comment, share divider +._15ks ._15kl::before { + border-left: 1px solid transparent !important; +} + +._56bf, .touch .btn { + border-radius: 0 !important; + border: 0 !important; +} + +//page side tab layout +._2cis { + border-left: 10px solid $bg_transparent !important; + border-right: 10px solid $bg_transparent !important; +} + +._2cir.selected, ._42rv, ._5zma, ._2x2s { + border-bottom: 3px solid $text !important; +} + +._1ss6 { + border-left: 2px solid $text !important; +} + +._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { + border-bottom: 1px solid $text !important; +} \ No newline at end of file diff --git a/app/src/web/assets/css/core/_core_messenger.scss b/app/src/web/assets/css/core/_core_messenger.scss new file mode 100644 index 00000000..608fc23d --- /dev/null +++ b/app/src/web/assets/css/core/_core_messenger.scss @@ -0,0 +1,20 @@ +// Not all messenger related components are here; only the main ones. +// Borders for instance are merged into core_border + +// Other person's message bubble +._34ee { + background: $background2 !important; + color: $text !important; + +} + +// Your message bubble; order matters +._34em ._34ee { + background: $accent !important; + color: $accent_text !important; +} + +// Sticker page +._5as0, ._5cni, ._5as2 { + background: $bg_opaque !important; +} \ No newline at end of file diff --git a/app/src/web/assets/css/core/_core_text.scss b/app/src/web/assets/css/core/_core_text.scss new file mode 100644 index 00000000..154cee84 --- /dev/null +++ b/app/src/web/assets/css/core/_core_text.scss @@ -0,0 +1,39 @@ +[style*="color"], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, +._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, +.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, +._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, +._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, +._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, +._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, +._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, +._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, +._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, +._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, +._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, +textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, +._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, +._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, +._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, +._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, +._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, +div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, +a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, +.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, +._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, +._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, +h1, h2, h3, h4, h5, h6 { + color: $text !important; +} + +strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { + color: $accent !important; +} + +._42nf ._42ng { + color: transparent !important; +} + +// most links do not have a special color. We will highlight those in posts and messages +p > a, .msg span > a { + color: $link !important; +} \ No newline at end of file diff --git a/app/src/web/assets/css/core/_main.scss b/app/src/web/assets/css/core/_main.scss new file mode 100644 index 00000000..3e972f93 --- /dev/null +++ b/app/src/web/assets/css/core/_main.scss @@ -0,0 +1,6 @@ +@import "core"; +@import "svg"; + +//this file is used as the base for all themes +//given that svgs take a lot of characters, we won't compile them when testing +//therefore we use the core scss diff --git a/app/src/web/assets/css/core/_svg.scss b/app/src/web/assets/css/core/_svg.scss new file mode 100644 index 00000000..8c714438 --- /dev/null +++ b/app/src/web/assets/css/core/_svg.scss @@ -0,0 +1,74 @@ +// icons courtesy of https://material.io/icons/ + +$camera: ''; + +// status upload image +._50uu { + @include background-svg($camera); +} + +$video: ''; + +// status upload video +._50uw { + @include background-svg($video); +} + +$like: ''; +$like_selected: ''; + +// 2018/12/29 +// Previously ._15km ._15ko::before and ._15km ._15ko._77la::before; however, reaction changes no longer affect this element +// The robust measure seems to be the parent of a[data-sigil~="like-reaction-flyout"] along with [data-sigil~="like"] for an unliked post +// and [data-sigil~="unlike"] for a liked post +._15km ._15ko::before { + @include background-svg($like); + background-position: center !important; +} + +._15km ._15ko._77la::before { + @include background-svg($like_selected); + background-position: center !important; +} + +$comment: ''; + +._15km ._15kq::before { + @include background-svg($comment); + background-position: center !important; +} + +$share: ''; + +._15km ._15kr::before { + @include background-svg($share); + background-position: center !important; +} + +$more_horiz: ''; + +//$menus: ".sp_89zNula0Qh5", +//".sp_MP2OtCXORz9", +//".sp_NIWBacTn8LF", +//// 2018/12/31 +//".sp_9ZFVhnFyWsw", +//// 2019/01/03 +//".sp_SJIJjSlGEIO"; +// +//$menu_collector: (); +// +//@each $menu in $menus { +// $menu_collector: append($menu_collector, unquote('#{$menu}'), 'comma'); +// $menu_collector: append($menu_collector, unquote('#{$menu}_2x'), 'comma'); +// $menu_collector: append($menu_collector, unquote('#{$menu}_3x'), 'comma'); +//} +// +//#{$menu_collector} { +// @include background-svg($more_horiz); +// background-position: center !important; +//} + +.story_body_container i.img[data-sigil*="story-popup-context"] { + @include background-svg($more_horiz); + background-position: center !important; +} \ No newline at end of file diff --git a/app/src/web/assets/css/core/core.css b/app/src/web/assets/css/core/core.css new file mode 100644 index 00000000..1d48fa35 --- /dev/null +++ b/app/src/web/assets/css/core/core.css @@ -0,0 +1,306 @@ +[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, +._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, +.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, +._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, +._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, +._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, +._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, +._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, +._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, +._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, +._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, +._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, +textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, +._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, +._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, +._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, +._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, +._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, +div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, +a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, +.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, +._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, +._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, +h1, h2, h3, h4, h5, h6 { + color: #d7b0d7 !important; +} + +strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { + color: #3b5998 !important; +} + +._42nf ._42ng { + color: transparent !important; +} + +p > a, .msg span > a { + color: #9266d5 !important; +} + +#viewport { + background: #451515 !important; +} + +body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, +._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, +._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, +._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, +._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, +._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, +.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, +.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, +._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, +._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, +._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, +._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, +._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, +._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, +.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, +._ue6, ._hdn._hdn, +._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, +._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, +._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, +._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, +._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { + background: rgba(255, 0, 255, 0.02) !important; +} + +._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { + background: #239645 !important; +} + +.aclb { + background: #ff4682 !important; +} + +._cv_, ._2sq8 { + background-color: rgba(255, 0, 255, 0.02) !important; +} + +#page, ._8l7, ._-j8, ._-j9, ._6o5v { + background: transparent !important; +} + +.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, +.mentions-suggest, ._1xoz, ._1xow { + background: #451515 !important; +} + +._403n, ._14v5 ._14v8, ._1-kc { + background: #c74646 !important; +} + +button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, +._590n, ._4g8h, ._2cpp, ._58a0.touched:after, +.timeline .timelinePublisher, .touched, .sharerAttachment, +.item a.primary.touched .primarywrap, ._38nq, ._537a, +._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, +.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, +._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, +._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, +._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, +._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, +#addMembersTypeahead .mToken.mTokenWeakReference, +.acbk { + background: rgba(199, 70, 70, 0.35) !important; +} + +.mQuestionsPollResultsBar .shaded { + background: #3b5998 !important; +} + +._220g, ._1_y8:after, ._6pk6, +._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, +._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { + background: rgba(215, 176, 215, 0.3) !important; +} + +button ._v89 ._54k8._1fl1 { + background: #3b5998 !important; +} + +._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, +._5j35::after, ._2k4b, ._3to7, ._4nw8 { + border-left: 1px solid rgba(215, 176, 215, 0.3) !important; +} + +._4_d1, ._5cni { + border-right: 1px solid rgba(215, 176, 215, 0.3) !important; +} + +._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, +._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, +._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, +._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, +._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { + border-top: 1px solid rgba(215, 176, 215, 0.3) !important; +} + +._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, +._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, +._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, +._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, +.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, +._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, +.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, +._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, +._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, +._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, +._5fjw > :first-child { + border-bottom: 1px solid rgba(215, 176, 215, 0.3) !important; +} + +.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, +._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { + border-top: 1px solid rgba(215, 176, 215, 0.3) !important; + border-bottom: 1px solid rgba(215, 176, 215, 0.3) !important; +} + +._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, +.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, +._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, +._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, +._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, +._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, +.home-notification .touchable.touched, ._6beo ._6ber, +._73ku ._73jw, +._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, +._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { + border: 1px solid rgba(215, 176, 215, 0.3) !important; +} + +.mQuestionsPollResultsBar .shaded, ._1027._13sm { + border: 1px solid #d7b0d7 !important; +} + +._3gka { + border: 1px dashed rgba(215, 176, 215, 0.3) !important; +} + +._4o58::after, .acr, ._t21, ._2bdb, +.acw, .aclb, ._4qax, ._5h8f { + border-color: rgba(215, 176, 215, 0.3) !important; +} + +._15ks ._15kl::before { + border-left: 1px solid transparent !important; +} + +._56bf, .touch .btn { + border-radius: 0 !important; + border: 0 !important; +} + +._2cis { + border-left: 10px solid rgba(255, 0, 255, 0.02) !important; + border-right: 10px solid rgba(255, 0, 255, 0.02) !important; +} + +._2cir.selected, ._42rv, ._5zma, ._2x2s { + border-bottom: 3px solid #d7b0d7 !important; +} + +._1ss6 { + border-left: 2px solid #d7b0d7 !important; +} + +._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { + border-bottom: 1px solid #d7b0d7 !important; +} + +._34ee { + background: rgba(199, 70, 70, 0.35) !important; + color: #d7b0d7 !important; +} + +._34em ._34ee { + background: #3b5998 !important; + color: #76d7c2 !important; +} + +._5as0, ._5cni, ._5as2 { + background: #451515 !important; +} + +*, *::after, *::before { + text-shadow: none !important; + box-shadow: none !important; +} + +[data-sigil=m_login_upsell], +[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { + display: none !important; +} + +::-webkit-input-placeholder { + color: #d7b0d7 !important; +} + +:-moz-placeholder { + color: #d7b0d7 !important; +} + +::-moz-placeholder { + color: #d7b0d7 !important; +} + +:-ms-input-placeholder { + color: #d7b0d7 !important; +} + +.excessItem { + outline: rgba(215, 176, 215, 0.3) !important; +} + +._3m1m { + background: linear-gradient(transparent, #451515) !important; +} + +@-webkit-keyframes highlightFade { + 0%, 50% { + background: rgba(199, 70, 70, 0.35); + } + 100% { + background: rgba(255, 0, 255, 0.02); + } +} +@-moz-keyframes highlightFade { + 0%, 50% { + background: rgba(199, 70, 70, 0.35); + } + 100% { + background: rgba(255, 0, 255, 0.02); + } +} +@keyframes highlightFade { + 0%, 50% { + background: rgba(199, 70, 70, 0.35); + } + 100% { + background: rgba(255, 0, 255, 0.02); + } +} +@-webkit-keyframes chatHighlightAnimation { + 0%, 100% { + background: rgba(255, 0, 255, 0.02); + } + 50% { + background: rgba(199, 70, 70, 0.35); + } +} +@-moz-keyframes chatHighlightAnimation { + 0%, 100% { + background: rgba(255, 0, 255, 0.02); + } + 50% { + background: rgba(199, 70, 70, 0.35); + } +} +@keyframes chatHighlightAnimation { + 0%, 100% { + background: rgba(255, 0, 255, 0.02); + } + 50% { + background: rgba(199, 70, 70, 0.35); + } +} diff --git a/app/src/web/assets/css/core/core.scss b/app/src/web/assets/css/core/core.scss new file mode 100644 index 00000000..38086529 --- /dev/null +++ b/app/src/web/assets/css/core/core.scss @@ -0,0 +1,54 @@ +@import "colors"; +@import "base"; +@import "core_text"; +@import "core_bg"; +@import "core_border"; +@import "core_messenger"; + +//GLOBAL overrides; use with caution +*, *::after, *::before { + text-shadow: none !important; + box-shadow: none !important; +} + +// .touch .btnS, button, ._94v, ._590n { +// box-shadow: none !important; +// } + +[data-sigil=m_login_upsell], +[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { + display: none !important; +} + +@include placeholder { + color: $text !important; +} + +.excessItem { + outline: $divider !important; +} + +._3m1m { + background: linear-gradient(transparent, $bg_opaque) !important; +} + +//new comment +@include keyframes(highlightFade) { + 0%, 50% { + background: $background2; + } + + 100% { + background: $bg_transparent; + } +} + +@include keyframes(chatHighlightAnimation) { + 0%, 100% { + background: $bg_transparent; + } + + 50% { + background: $background2; + } +} diff --git a/app/src/web/assets/css/themes/.gitignore b/app/src/web/assets/css/themes/.gitignore new file mode 100644 index 00000000..01d06441 --- /dev/null +++ b/app/src/web/assets/css/themes/.gitignore @@ -0,0 +1,2 @@ +test.scss +test.css \ No newline at end of file diff --git a/app/src/web/assets/css/themes/custom.css b/app/src/web/assets/css/themes/custom.css new file mode 100644 index 00000000..e38c6de0 --- /dev/null +++ b/app/src/web/assets/css/themes/custom.css @@ -0,0 +1,338 @@ +[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, +._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, +.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, +._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, +._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, +._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, +._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, +._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, +._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, +._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, +._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, +._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, +textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, +._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, +._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, +._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, +._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, +._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, +div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, +a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, +.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, +._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, +._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, +h1, h2, h3, h4, h5, h6 { + color: $T$ !important; +} + +strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { + color: $A$ !important; +} + +._42nf ._42ng { + color: transparent !important; +} + +p > a, .msg span > a { + color: $TT$ !important; +} + +#viewport { + background: $B$ !important; +} + +body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, +._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, +._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, +._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, +._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, +._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, +.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, +.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, +._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, +._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, +._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, +._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, +._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, +._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, +.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, +._ue6, ._hdn._hdn, +._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, +._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, +._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, +._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, +._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { + background: $BT$ !important; +} + +._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { + background: $C$ !important; +} + +.aclb { + background: $TI$ !important; +} + +._cv_, ._2sq8 { + background-color: $BT$ !important; +} + +#page, ._8l7, ._-j8, ._-j9, ._6o5v { + background: transparent !important; +} + +.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, +.mentions-suggest, ._1xoz, ._1xow { + background: $O$ !important; +} + +._403n, ._14v5 ._14v8, ._1-kc { + background: $OO$ !important; +} + +button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, +._590n, ._4g8h, ._2cpp, ._58a0.touched:after, +.timeline .timelinePublisher, .touched, .sharerAttachment, +.item a.primary.touched .primarywrap, ._38nq, ._537a, +._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, +.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, +._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, +._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, +._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, +._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, +#addMembersTypeahead .mToken.mTokenWeakReference, +.acbk { + background: $BBT$ !important; +} + +.mQuestionsPollResultsBar .shaded { + background: $A$ !important; +} + +._220g, ._1_y8:after, ._6pk6, +._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, +._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { + background: $D$ !important; +} + +button ._v89 ._54k8._1fl1 { + background: $A$ !important; +} + +._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, +._5j35::after, ._2k4b, ._3to7, ._4nw8 { + border-left: 1px solid $D$ !important; +} + +._4_d1, ._5cni { + border-right: 1px solid $D$ !important; +} + +._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, +._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, +._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, +._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, +._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { + border-top: 1px solid $D$ !important; +} + +._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, +._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, +._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, +._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, +.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, +._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, +.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, +._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, +._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, +._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, +._5fjw > :first-child { + border-bottom: 1px solid $D$ !important; +} + +.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, +._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { + border-top: 1px solid $D$ !important; + border-bottom: 1px solid $D$ !important; +} + +._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, +.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, +._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, +._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, +._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, +._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, +.home-notification .touchable.touched, ._6beo ._6ber, +._73ku ._73jw, +._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, +._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { + border: 1px solid $D$ !important; +} + +.mQuestionsPollResultsBar .shaded, ._1027._13sm { + border: 1px solid $T$ !important; +} + +._3gka { + border: 1px dashed $D$ !important; +} + +._4o58::after, .acr, ._t21, ._2bdb, +.acw, .aclb, ._4qax, ._5h8f { + border-color: $D$ !important; +} + +._15ks ._15kl::before { + border-left: 1px solid transparent !important; +} + +._56bf, .touch .btn { + border-radius: 0 !important; + border: 0 !important; +} + +._2cis { + border-left: 10px solid $BT$ !important; + border-right: 10px solid $BT$ !important; +} + +._2cir.selected, ._42rv, ._5zma, ._2x2s { + border-bottom: 3px solid $T$ !important; +} + +._1ss6 { + border-left: 2px solid $T$ !important; +} + +._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { + border-bottom: 1px solid $T$ !important; +} + +._34ee { + background: $BBT$ !important; + color: $T$ !important; +} + +._34em ._34ee { + background: $A$ !important; + color: $AT$ !important; +} + +._5as0, ._5cni, ._5as2 { + background: $O$ !important; +} + +*, *::after, *::before { + text-shadow: none !important; + box-shadow: none !important; +} + +[data-sigil=m_login_upsell], +[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { + display: none !important; +} + +::-webkit-input-placeholder { + color: $T$ !important; +} + +:-moz-placeholder { + color: $T$ !important; +} + +::-moz-placeholder { + color: $T$ !important; +} + +:-ms-input-placeholder { + color: $T$ !important; +} + +.excessItem { + outline: $D$ !important; +} + +._3m1m { + background: linear-gradient(transparent, $O$) !important; +} + +@-webkit-keyframes highlightFade { + 0%, 50% { + background: $BBT$; + } + 100% { + background: $BT$; + } +} +@-moz-keyframes highlightFade { + 0%, 50% { + background: $BBT$; + } + 100% { + background: $BT$; + } +} +@keyframes highlightFade { + 0%, 50% { + background: $BBT$; + } + 100% { + background: $BT$; + } +} +@-webkit-keyframes chatHighlightAnimation { + 0%, 100% { + background: $BT$; + } + 50% { + background: $BBT$; + } +} +@-moz-keyframes chatHighlightAnimation { + 0%, 100% { + background: $BT$; + } + 50% { + background: $BBT$; + } +} +@keyframes chatHighlightAnimation { + 0%, 100% { + background: $BT$; + } + 50% { + background: $BBT$; + } +} +._50uu { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; +} + +._50uw { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; +} + +._15km ._15ko::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15ko._77la::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$A$" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kq::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kr::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="$T$" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +.story_body_container i.img[data-sigil*=story-popup-context] { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="$T$" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} diff --git a/app/src/web/assets/css/themes/custom.scss b/app/src/web/assets/css/themes/custom.scss new file mode 100644 index 00000000..50c029fb --- /dev/null +++ b/app/src/web/assets/css/themes/custom.scss @@ -0,0 +1,14 @@ +$bg_transparent: unquote('$BT$'); +$text: unquote('$T$'); +$link: unquote('$TT$'); +$accent: unquote('$A$'); +$accent_text: unquote('$AT$'); +$background: unquote('$B$'); +$background2: unquote('$BBT$'); +$bg_opaque: unquote('$O$'); +$bg_opaque2: unquote('$OO$'); +$divider: unquote('$D$'); +$card: unquote('$C$'); +$tint: unquote('$TI$'); + +@import "../core/main"; diff --git a/app/src/web/assets/css/themes/material_amoled.css b/app/src/web/assets/css/themes/material_amoled.css new file mode 100644 index 00000000..c821003e --- /dev/null +++ b/app/src/web/assets/css/themes/material_amoled.css @@ -0,0 +1,338 @@ +[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, +._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, +.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, +._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, +._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, +._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, +._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, +._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, +._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, +._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, +._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, +._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, +textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, +._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, +._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, +._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, +._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, +._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, +div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, +a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, +.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, +._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, +._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, +h1, h2, h3, h4, h5, h6 { + color: #fff !important; +} + +strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { + color: #5d86dd !important; +} + +._42nf ._42ng { + color: transparent !important; +} + +p > a, .msg span > a { + color: #5d86dd !important; +} + +#viewport { + background: #000 !important; +} + +body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, +._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, +._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, +._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, +._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, +._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, +.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, +.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, +._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, +._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, +._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, +._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, +._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, +._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, +.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, +._ue6, ._hdn._hdn, +._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, +._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, +._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, +._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, +._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { + background: #000 !important; +} + +._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { + background: rgba(0, 0, 0, 0.35) !important; +} + +.aclb { + background: rgba(255, 255, 255, 0.2) !important; +} + +._cv_, ._2sq8 { + background-color: #000 !important; +} + +#page, ._8l7, ._-j8, ._-j9, ._6o5v { + background: transparent !important; +} + +.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, +.mentions-suggest, ._1xoz, ._1xow { + background: black !important; +} + +._403n, ._14v5 ._14v8, ._1-kc { + background: black !important; +} + +button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, +._590n, ._4g8h, ._2cpp, ._58a0.touched:after, +.timeline .timelinePublisher, .touched, .sharerAttachment, +.item a.primary.touched .primarywrap, ._38nq, ._537a, +._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, +.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, +._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, +._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, +._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, +._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, +#addMembersTypeahead .mToken.mTokenWeakReference, +.acbk { + background: rgba(0, 0, 0, 0.35) !important; +} + +.mQuestionsPollResultsBar .shaded { + background: #5d86dd !important; +} + +._220g, ._1_y8:after, ._6pk6, +._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, +._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { + background: rgba(255, 255, 255, 0.3) !important; +} + +button ._v89 ._54k8._1fl1 { + background: #5d86dd !important; +} + +._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, +._5j35::after, ._2k4b, ._3to7, ._4nw8 { + border-left: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._4_d1, ._5cni { + border-right: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, +._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, +._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, +._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, +._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { + border-top: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, +._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, +._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, +._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, +.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, +._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, +.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, +._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, +._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, +._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, +._5fjw > :first-child { + border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, +._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { + border-top: 1px solid rgba(255, 255, 255, 0.3) !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, +.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, +._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, +._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, +._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, +._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, +.home-notification .touchable.touched, ._6beo ._6ber, +._73ku ._73jw, +._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, +._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { + border: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +.mQuestionsPollResultsBar .shaded, ._1027._13sm { + border: 1px solid #fff !important; +} + +._3gka { + border: 1px dashed rgba(255, 255, 255, 0.3) !important; +} + +._4o58::after, .acr, ._t21, ._2bdb, +.acw, .aclb, ._4qax, ._5h8f { + border-color: rgba(255, 255, 255, 0.3) !important; +} + +._15ks ._15kl::before { + border-left: 1px solid transparent !important; +} + +._56bf, .touch .btn { + border-radius: 0 !important; + border: 0 !important; +} + +._2cis { + border-left: 10px solid #000 !important; + border-right: 10px solid #000 !important; +} + +._2cir.selected, ._42rv, ._5zma, ._2x2s { + border-bottom: 3px solid #fff !important; +} + +._1ss6 { + border-left: 2px solid #fff !important; +} + +._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { + border-bottom: 1px solid #fff !important; +} + +._34ee { + background: rgba(0, 0, 0, 0.35) !important; + color: #fff !important; +} + +._34em ._34ee { + background: #5d86dd !important; + color: #fff !important; +} + +._5as0, ._5cni, ._5as2 { + background: black !important; +} + +*, *::after, *::before { + text-shadow: none !important; + box-shadow: none !important; +} + +[data-sigil=m_login_upsell], +[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { + display: none !important; +} + +::-webkit-input-placeholder { + color: #fff !important; +} + +:-moz-placeholder { + color: #fff !important; +} + +::-moz-placeholder { + color: #fff !important; +} + +:-ms-input-placeholder { + color: #fff !important; +} + +.excessItem { + outline: rgba(255, 255, 255, 0.3) !important; +} + +._3m1m { + background: linear-gradient(transparent, black) !important; +} + +@-webkit-keyframes highlightFade { + 0%, 50% { + background: rgba(0, 0, 0, 0.35); + } + 100% { + background: #000; + } +} +@-moz-keyframes highlightFade { + 0%, 50% { + background: rgba(0, 0, 0, 0.35); + } + 100% { + background: #000; + } +} +@keyframes highlightFade { + 0%, 50% { + background: rgba(0, 0, 0, 0.35); + } + 100% { + background: #000; + } +} +@-webkit-keyframes chatHighlightAnimation { + 0%, 100% { + background: #000; + } + 50% { + background: rgba(0, 0, 0, 0.35); + } +} +@-moz-keyframes chatHighlightAnimation { + 0%, 100% { + background: #000; + } + 50% { + background: rgba(0, 0, 0, 0.35); + } +} +@keyframes chatHighlightAnimation { + 0%, 100% { + background: #000; + } + 50% { + background: rgba(0, 0, 0, 0.35); + } +} +._50uu { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; +} + +._50uw { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; +} + +._15km ._15ko::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15ko._77la::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%235d86dd" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kq::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kr::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +.story_body_container i.img[data-sigil*=story-popup-context] { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23fff" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} diff --git a/app/src/web/assets/css/themes/material_amoled.scss b/app/src/web/assets/css/themes/material_amoled.scss new file mode 100644 index 00000000..19190126 --- /dev/null +++ b/app/src/web/assets/css/themes/material_amoled.scss @@ -0,0 +1,11 @@ +$text: #fff; +$accent_text: #fff; +$link: #5d86dd; +$accent: #5d86dd; +$background: #000; +$background2: rgba($background, 0.35); +$bg_transparent: $background; +$card: $background2; +$tint: rgba(#fff, 0.2); + +@import "../core/main"; diff --git a/app/src/web/assets/css/themes/material_dark.css b/app/src/web/assets/css/themes/material_dark.css new file mode 100644 index 00000000..0dc739eb --- /dev/null +++ b/app/src/web/assets/css/themes/material_dark.css @@ -0,0 +1,338 @@ +[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, +._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, +.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, +._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, +._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, +._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, +._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, +._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, +._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, +._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, +._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, +._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, +textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, +._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, +._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, +._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, +._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, +._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, +div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, +a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, +.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, +._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, +._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, +h1, h2, h3, h4, h5, h6 { + color: #fff !important; +} + +strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { + color: #5d86dd !important; +} + +._42nf ._42ng { + color: transparent !important; +} + +p > a, .msg span > a { + color: #5d86dd !important; +} + +#viewport { + background: #303030 !important; +} + +body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, +._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, +._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, +._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, +._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, +._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, +.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, +.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, +._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, +._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, +._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, +._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, +._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, +._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, +.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, +._ue6, ._hdn._hdn, +._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, +._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, +._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, +._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, +._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { + background: #303030 !important; +} + +._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { + background: #353535 !important; +} + +.aclb { + background: rgba(255, 255, 255, 0.2) !important; +} + +._cv_, ._2sq8 { + background-color: #303030 !important; +} + +#page, ._8l7, ._-j8, ._-j9, ._6o5v { + background: transparent !important; +} + +.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, +.mentions-suggest, ._1xoz, ._1xow { + background: #303030 !important; +} + +._403n, ._14v5 ._14v8, ._1-kc { + background: #898989 !important; +} + +button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, +._590n, ._4g8h, ._2cpp, ._58a0.touched:after, +.timeline .timelinePublisher, .touched, .sharerAttachment, +.item a.primary.touched .primarywrap, ._38nq, ._537a, +._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, +.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, +._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, +._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, +._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, +._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, +#addMembersTypeahead .mToken.mTokenWeakReference, +.acbk { + background: rgba(137, 137, 137, 0.35) !important; +} + +.mQuestionsPollResultsBar .shaded { + background: #5d86dd !important; +} + +._220g, ._1_y8:after, ._6pk6, +._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, +._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { + background: rgba(255, 255, 255, 0.3) !important; +} + +button ._v89 ._54k8._1fl1 { + background: #5d86dd !important; +} + +._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, +._5j35::after, ._2k4b, ._3to7, ._4nw8 { + border-left: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._4_d1, ._5cni { + border-right: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, +._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, +._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, +._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, +._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { + border-top: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, +._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, +._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, +._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, +.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, +._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, +.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, +._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, +._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, +._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, +._5fjw > :first-child { + border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, +._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { + border-top: 1px solid rgba(255, 255, 255, 0.3) !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, +.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, +._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, +._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, +._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, +._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, +.home-notification .touchable.touched, ._6beo ._6ber, +._73ku ._73jw, +._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, +._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { + border: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +.mQuestionsPollResultsBar .shaded, ._1027._13sm { + border: 1px solid #fff !important; +} + +._3gka { + border: 1px dashed rgba(255, 255, 255, 0.3) !important; +} + +._4o58::after, .acr, ._t21, ._2bdb, +.acw, .aclb, ._4qax, ._5h8f { + border-color: rgba(255, 255, 255, 0.3) !important; +} + +._15ks ._15kl::before { + border-left: 1px solid transparent !important; +} + +._56bf, .touch .btn { + border-radius: 0 !important; + border: 0 !important; +} + +._2cis { + border-left: 10px solid #303030 !important; + border-right: 10px solid #303030 !important; +} + +._2cir.selected, ._42rv, ._5zma, ._2x2s { + border-bottom: 3px solid #fff !important; +} + +._1ss6 { + border-left: 2px solid #fff !important; +} + +._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { + border-bottom: 1px solid #fff !important; +} + +._34ee { + background: rgba(137, 137, 137, 0.35) !important; + color: #fff !important; +} + +._34em ._34ee { + background: #5d86dd !important; + color: #fff !important; +} + +._5as0, ._5cni, ._5as2 { + background: #303030 !important; +} + +*, *::after, *::before { + text-shadow: none !important; + box-shadow: none !important; +} + +[data-sigil=m_login_upsell], +[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { + display: none !important; +} + +::-webkit-input-placeholder { + color: #fff !important; +} + +:-moz-placeholder { + color: #fff !important; +} + +::-moz-placeholder { + color: #fff !important; +} + +:-ms-input-placeholder { + color: #fff !important; +} + +.excessItem { + outline: rgba(255, 255, 255, 0.3) !important; +} + +._3m1m { + background: linear-gradient(transparent, #303030) !important; +} + +@-webkit-keyframes highlightFade { + 0%, 50% { + background: rgba(137, 137, 137, 0.35); + } + 100% { + background: #303030; + } +} +@-moz-keyframes highlightFade { + 0%, 50% { + background: rgba(137, 137, 137, 0.35); + } + 100% { + background: #303030; + } +} +@keyframes highlightFade { + 0%, 50% { + background: rgba(137, 137, 137, 0.35); + } + 100% { + background: #303030; + } +} +@-webkit-keyframes chatHighlightAnimation { + 0%, 100% { + background: #303030; + } + 50% { + background: rgba(137, 137, 137, 0.35); + } +} +@-moz-keyframes chatHighlightAnimation { + 0%, 100% { + background: #303030; + } + 50% { + background: rgba(137, 137, 137, 0.35); + } +} +@keyframes chatHighlightAnimation { + 0%, 100% { + background: #303030; + } + 50% { + background: rgba(137, 137, 137, 0.35); + } +} +._50uu { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; +} + +._50uw { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; +} + +._15km ._15ko::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15ko._77la::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%235d86dd" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kq::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kr::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +.story_body_container i.img[data-sigil*=story-popup-context] { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23fff" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} diff --git a/app/src/web/assets/css/themes/material_dark.scss b/app/src/web/assets/css/themes/material_dark.scss new file mode 100644 index 00000000..18b8b461 --- /dev/null +++ b/app/src/web/assets/css/themes/material_dark.scss @@ -0,0 +1,10 @@ +$text: #fff; +$accent_text: #fff; +$link: #5d86dd; +$accent: #5d86dd; +$background: #303030; +$bg_transparent: $background; +$card: #353535; +$tint: rgba(#fff, 0.2); + +@import "../core/main"; diff --git a/app/src/web/assets/css/themes/material_glass.css b/app/src/web/assets/css/themes/material_glass.css new file mode 100644 index 00000000..3bf9530f --- /dev/null +++ b/app/src/web/assets/css/themes/material_glass.css @@ -0,0 +1,338 @@ +[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, +._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, +.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, +._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, +._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, +._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, +._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, +._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, +._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, +._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, +._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, +._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, +textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, +._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, +._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, +._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, +._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, +._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, +div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, +a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, +.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, +._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, +._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, +h1, h2, h3, h4, h5, h6 { + color: #fff !important; +} + +strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { + color: #5d86dd !important; +} + +._42nf ._42ng { + color: transparent !important; +} + +p > a, .msg span > a { + color: #5d86dd !important; +} + +#viewport { + background: rgba(0, 0, 0, 0.1) !important; +} + +body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, +._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, +._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, +._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, +._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, +._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, +.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, +.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, +._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, +._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, +._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, +._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, +._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, +._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, +.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, +._ue6, ._hdn._hdn, +._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, +._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, +._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, +._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, +._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { + background: transparent !important; +} + +._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { + background: rgba(0, 0, 0, 0.25) !important; +} + +.aclb { + background: rgba(255, 255, 255, 0.15) !important; +} + +._cv_, ._2sq8 { + background-color: transparent !important; +} + +#page, ._8l7, ._-j8, ._-j9, ._6o5v { + background: transparent !important; +} + +.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, +.mentions-suggest, ._1xoz, ._1xow { + background: black !important; +} + +._403n, ._14v5 ._14v8, ._1-kc { + background: #595959 !important; +} + +button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, +._590n, ._4g8h, ._2cpp, ._58a0.touched:after, +.timeline .timelinePublisher, .touched, .sharerAttachment, +.item a.primary.touched .primarywrap, ._38nq, ._537a, +._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, +.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, +._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, +._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, +._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, +._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, +#addMembersTypeahead .mToken.mTokenWeakReference, +.acbk { + background: rgba(89, 89, 89, 0.35) !important; +} + +.mQuestionsPollResultsBar .shaded { + background: #5d86dd !important; +} + +._220g, ._1_y8:after, ._6pk6, +._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, +._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { + background: rgba(255, 255, 255, 0.3) !important; +} + +button ._v89 ._54k8._1fl1 { + background: #5d86dd !important; +} + +._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, +._5j35::after, ._2k4b, ._3to7, ._4nw8 { + border-left: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._4_d1, ._5cni { + border-right: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, +._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, +._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, +._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, +._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { + border-top: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, +._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, +._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, +._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, +.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, +._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, +.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, +._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, +._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, +._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, +._5fjw > :first-child { + border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, +._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { + border-top: 1px solid rgba(255, 255, 255, 0.3) !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, +.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, +._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, +._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, +._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, +._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, +.home-notification .touchable.touched, ._6beo ._6ber, +._73ku ._73jw, +._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, +._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { + border: 1px solid rgba(255, 255, 255, 0.3) !important; +} + +.mQuestionsPollResultsBar .shaded, ._1027._13sm { + border: 1px solid #fff !important; +} + +._3gka { + border: 1px dashed rgba(255, 255, 255, 0.3) !important; +} + +._4o58::after, .acr, ._t21, ._2bdb, +.acw, .aclb, ._4qax, ._5h8f { + border-color: rgba(255, 255, 255, 0.3) !important; +} + +._15ks ._15kl::before { + border-left: 1px solid transparent !important; +} + +._56bf, .touch .btn { + border-radius: 0 !important; + border: 0 !important; +} + +._2cis { + border-left: 10px solid transparent !important; + border-right: 10px solid transparent !important; +} + +._2cir.selected, ._42rv, ._5zma, ._2x2s { + border-bottom: 3px solid #fff !important; +} + +._1ss6 { + border-left: 2px solid #fff !important; +} + +._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { + border-bottom: 1px solid #fff !important; +} + +._34ee { + background: rgba(89, 89, 89, 0.35) !important; + color: #fff !important; +} + +._34em ._34ee { + background: #5d86dd !important; + color: #fff !important; +} + +._5as0, ._5cni, ._5as2 { + background: black !important; +} + +*, *::after, *::before { + text-shadow: none !important; + box-shadow: none !important; +} + +[data-sigil=m_login_upsell], +[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { + display: none !important; +} + +::-webkit-input-placeholder { + color: #fff !important; +} + +:-moz-placeholder { + color: #fff !important; +} + +::-moz-placeholder { + color: #fff !important; +} + +:-ms-input-placeholder { + color: #fff !important; +} + +.excessItem { + outline: rgba(255, 255, 255, 0.3) !important; +} + +._3m1m { + background: linear-gradient(transparent, black) !important; +} + +@-webkit-keyframes highlightFade { + 0%, 50% { + background: rgba(89, 89, 89, 0.35); + } + 100% { + background: transparent; + } +} +@-moz-keyframes highlightFade { + 0%, 50% { + background: rgba(89, 89, 89, 0.35); + } + 100% { + background: transparent; + } +} +@keyframes highlightFade { + 0%, 50% { + background: rgba(89, 89, 89, 0.35); + } + 100% { + background: transparent; + } +} +@-webkit-keyframes chatHighlightAnimation { + 0%, 100% { + background: transparent; + } + 50% { + background: rgba(89, 89, 89, 0.35); + } +} +@-moz-keyframes chatHighlightAnimation { + 0%, 100% { + background: transparent; + } + 50% { + background: rgba(89, 89, 89, 0.35); + } +} +@keyframes chatHighlightAnimation { + 0%, 100% { + background: transparent; + } + 50% { + background: rgba(89, 89, 89, 0.35); + } +} +._50uu { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; +} + +._50uw { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; +} + +._15km ._15ko::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15ko._77la::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%235d86dd" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kq::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kr::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +.story_body_container i.img[data-sigil*=story-popup-context] { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23fff" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} diff --git a/app/src/web/assets/css/themes/material_glass.scss b/app/src/web/assets/css/themes/material_glass.scss new file mode 100644 index 00000000..0c61a38c --- /dev/null +++ b/app/src/web/assets/css/themes/material_glass.scss @@ -0,0 +1,10 @@ +$text: #fff; +$accent_text: #fff; +$link: #5d86dd; +$accent: #5d86dd; +$background: rgba(#000, 0.1); +$bg_transparent: transparent; +$card: rgba(#000, 0.25); +$tint: rgba(#fff, 0.15); + +@import "../core/main"; diff --git a/app/src/web/assets/css/themes/material_light.css b/app/src/web/assets/css/themes/material_light.css new file mode 100644 index 00000000..c00dd12f --- /dev/null +++ b/app/src/web/assets/css/themes/material_light.css @@ -0,0 +1,338 @@ +[style*=color], body, input, ._42rv, ._4qau, ._dwm .descArea, ._eu5, +._1tcc, ._3g9-, ._29z_, ._3xz7, ._ib-, ._3bg5 ._56dq, ._477i, ._2vxk, +.touched *, ._1_yj, ._1_yl, ._4pj9, ._2bdc, ._3qdh ._3qdn ._3qdk, ._3qdk ._48_q, +._z-z, ._z-v, ._1e8d, ._36nl, ._36nm, ._2_11, ._2_rf, ._2ip_, ._403p, .cq, ._usr, +._5xu2, ._3ml8, ._3mla, ._50vk, ._1m2u, ._31y7, ._4kcb, ._1lf6, ._1lf5, +._1lf4, ._1hiz, ._xod, ._5ag5, ._zmk, ._3t_h, ._5lm6, ._3clv, ._3zlc, ._36rd, +._31zk, ._31zl, ._3xsa, ._3xs9, ._2-4s, ._2fzz ul, ._3z10, +._43mh, .touch .btn, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, +._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, +._18qg, ._1_ac, ._529p, ._4dwt ._1vh3, ._4a5f, ._23_t, ._2rzc, ._23_s, ._2rzd, +._5aga, ._5ag9, ._537a, .acy, ._5ro_, ._6-l ._2us7, ._4mp, ._2b08, ._36e0, ._4-dy, +._14v5 ._14v8, ._1440, ._1442, ._1448, ._4ks_, .mCount, ._27vc, ._24e1, ._2rbw, ._3iyw ._3mzw, +textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, +._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, +._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._38d-, ._3n8y, ._38dt, ._3oyg, +._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, +._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, +._2new, .appCenterCategorySelectorButton, ._1ksq, ._1kt6, ._6ber, ._mxb, ._3oyd, +div.sharerSelector, .footer, ._4pv_, ._1dbp, ._3kad, ._20zc, ._2i5v, ._2i5w, +a, ._5fpq, ._4gux, ._3bg5 ._52x1, ._3bg5 ._52x2, ._6dsj ._3gin, ._hdn._hdn, +.mentions-input, .mentions-placeholder, .largeStatusBox .placeHolder, .fcw, +._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, +._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, +h1, h2, h3, h4, h5, h6 { + color: #000 !important; +} + +strong > a, ._15ks ._2q8z._2q8z, ._1e3e, .blueName { + color: #3b5998 !important; +} + +._42nf ._42ng { + color: transparent !important; +} + +p > a, .msg span > a { + color: #3b5998 !important; +} + +#viewport { + background: #fafafa !important; +} + +body, :root, #root, #header, #MComposer, [style*=background-color], ._1upc, input, ._2f9r, ._59e9, ._5pz4, ._5lp4, +._5lp5, .container, .subpage, ._5n_f, #static_templates, ._22_8, ._1t4h, ._uoq, ._3qdh, ._8ca, ._3h8i, +._6-l ._2us7, ._6-l ._6-p, ._333v, div.sharerSelector, ._529j, ._305j, ._1pph, ._3t_l, ._4pvz, +._1g05, .acy, ._51-g, ._533c, ._ib-, .sharerAttachmentEmpty, .sharerBottomWrapper, ._24e1, ._-j7, +._3bg5 ._56do, ._5hfh, ._52e-, .mQuestionsPollResultsBar, ._5hoc, ._5oxw, ._32_4, ._1hiz, +._38do, .bo, .cq, ._234-, ._a-5, ._2zh4, ._15ks, ._3oyc, ._36dc, ._3iyw ._3iyx, ._6bes, ._55wo, ._4-dy, +.tlBody, #timelineBody, .timelineX, .timeline, .feed, .tlPrelude, .tlFeedPlaceholder, ._4_d0, +.al, ._1gkq, ._5c5b, ._1qxg, ._5luf, ._2new, ._cld, ._3zvb, ._2nk0, .btnD, .btnI, ._2bdb, ._3ci9, +._11ub, ._5p7j, ._55wm, ._5rgs, ._5xuj, ._1sv1, ._45fu, ._18qg, ._1_ac, ._5w3g, ._3e18, ._6be7, +._5q_r, ._5yt8, ._idb, ._2ip_, ._f6s, ._2l5v, ._8i2, ._kr5, ._2q7u, ._2q7v, ._5xp2, div.fullwidthMore, +._577z, ._2u4w, ._3u9p, ._3u9t, ._cw4, ._5_y-, ._5_y_, ._5_z3, ._cwy, ._5_z0, ._voz, ._vos, +._5_z1, ._5_z2, ._2mtc, ._206a, ._1_-1, ._1ybg, .appCenterCategorySelectorButton, ._5_ee, ._3clk, +._5c9u, div._5y57::before, ._59f6._55so::before, .structuredPublisher, ._94v, ._vqv, ._5lp5, +._55wm, ._2om3, ._2ol-, ._1f9d, ._vee, ._31a-, ._3r8b, ._3r9d, ._5vq5, ._3tl8, ._65wz, ._4edl, +.acw, ._4_xl, ._1p70, ._1p70, ._1ih_, ._51v6, ._u2c, ._484w, ._3ils, ._rm7, ._32qk, ._d01, ._1glm, +._ue6, ._hdn._hdn, +._2y60, ._5fu3, ._2foa, ._2y5_, ._38o9, ._1kb, .mAppCenterFatLabel, ._3bmj, ._5zmb, ._2x2s, ._3kac, ._3kad, +._3f50, .mentions-placeholder, .mentions, .mentions-shadow, .mentions-measurer, .acg, ._59tu, +._4l9b, ._4gj3, .groupChromeView, ._i3g, ._3jcf, .error, ._1dbp, ._5zma, ._6beq, ._vi6, +._uww, textarea, ._15n_, ._skt, ._5f28, ._14_j, ._3bg5, ._53_-, ._52x1, ._35au, ._cwy, +._1rfn ._1rfk ._4vc-, ._1rfk, ._1rfk ._2v9s, ._301x { + background: #fafafa !important; +} + +._31nf, ._2v9s, ._d4i, article._55wo, ._10c_, ._2jl2, ._55wo, ._6150, ._50mi, ._4-dw, ._4_2z { + background: #fff !important; +} + +.aclb { + background: #ddd !important; +} + +._cv_, ._2sq8 { + background-color: #fafafa !important; +} + +#page, ._8l7, ._-j8, ._-j9, ._6o5v { + background: transparent !important; +} + +.jewel, .flyout, ._52z5, ._13e_, ._5-lw, ._5c0e, .jx-result, ._336p, .mentions-suggest-item, ._2suk, +.mentions-suggest, ._1xoz, ._1xow { + background: #fafafa !important; +} + +._403n, ._14v5 ._14v8, ._1-kc { + background: #e6e6e6 !important; +} + +button:not([style*=image]):not(.privacyButtons), button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, +._590n, ._4g8h, ._2cpp, ._58a0.touched:after, +.timeline .timelinePublisher, .touched, .sharerAttachment, +.item a.primary.touched .primarywrap, ._38nq, ._537a, +._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, +.excessItem, .acr, ._5-lx, ._3g9-, ._55ws, ._6dsj ._3gin, ._69aj, +._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, +._10sb li.selected, ._2z4j, ._ib-, ._1bhl, ._5a5j, +._2b06, ._2tsf, ._3gka, .mCount, ._27vc, ._4pv-, ._6pk5, +._4qax, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, ._z-w, ._t21, .mToken, +#addMembersTypeahead .mToken.mTokenWeakReference, +.acbk { + background: rgba(230, 230, 230, 0.35) !important; +} + +.mQuestionsPollResultsBar .shaded { + background: #3b5998 !important; +} + +._220g, ._1_y8:after, ._6pk6, +._2zh4::before, ._2ip_ ._2zh4::before, ._2ip_ ._15kk::before, ._2ip_ ._15kk + ._4u3j::before, +._58a0:before, ._43mh::before, ._43mh::after, ._1_-1::before, ._1kmv:after, ._1_ac:before { + background: rgba(0, 0, 0, 0.3) !important; +} + +button ._v89 ._54k8._1fl1 { + background: #3b5998 !important; +} + +._15kl::before, ._37fd .inlineComposerButton, ._1hb:before, +._5j35::after, ._2k4b, ._3to7, ._4nw8 { + border-left: 1px solid rgba(0, 0, 0, 0.3) !important; +} + +._4_d1, ._5cni { + border-right: 1px solid rgba(0, 0, 0, 0.3) !important; +} + +._1mx0, ._1rbr, ._5yt8, ._idb, ._cld, ._1e8h, ._z-w, ._1ha, ._1n8h ._1oby, ._5f99, ._2t39, +._2pbp, ._5rou:first-child, ._egf:first-child, ._io2, ._3qdi ._48_m::after, +._15n_, ._3-2-, ._27ve, ._2s20, ._gui, ._2s21 > *::after, ._32qk, ._d00, ._d01, ._38o9, +._3u9t, ._55fj, .mEventProfileSection.useBorder td, ._3ils, ._5as0, ._5as2, +._52x1, ._3wjp, ._usq, ._2cul:before, ._13e_, .jewel .flyout, ._3bg5 ._52x6, ._56d8, .al { + border-top: 1px solid rgba(0, 0, 0, 0.3) !important; +} + +._15ny::after, ._z-w, ._8i2, ._2nk0, ._22_8, ._1t4h, ._37fd, ._1ha, ._3bg5 ._56do, ._8he, +._400s, ._5hoc, ._1bhn, ._5ag6, ._4pvz, +._301x, ._x08 ._x0a:after, ._36dc, ._6-l ._57jn, ._527k, ._g_k, +._577z:not(:last-child) ._ygd, ._3u9u, ._3mgz, ._52x6, ._2066, ._5luf, ._2bdc, ._3ci9, +.mAppCenterFatLabel, .appCenterCategorySelectorButton, ._1q6v, ._5q_r, ._5yt8, ._38do, ._38dt, +._ap1, ._52x1, ._59tu, ._usq, ._13e_, ._59f6._55so::before, ._4gj3, .error, ._35--, ._1wev, +.jx-result, ._1f9d, ._vef, ._55x2 > *, .al, ._44qk, ._5rgs, ._5xuj, ._1sv1, ._idb, +._5lp5, ._3-2-, ._3to6, ._ir5, ._4nw6, ._4nwh, ._27ve, div._51v6::before, +._3c9h::before, ._2s20, ._gui, ._5jku, ._2foa, ._2y60, ._5fu3, ._4en9, ._1kb:not(:last-child) ._1kc, +._5pz4, ._5lp4, ._5lp5, ._5h6z, ._5h6x, ._2om4, ._5fjw > div, ._5fjv > :first-child, +._5fjw > :first-child { + border-bottom: 1px solid rgba(0, 0, 0, 0.3) !important; +} + +.item a.primary.touched .primarywrap, ._4dwt ._5y33, ._1ih_, ._5_50, ._6beq, ._69aj, +._5fjv, ._3on6, ._2u4w, ._2om3, ._2ol-, ._5fjw, ._4z83, ._1gkq, ._4-dy { + border-top: 1px solid rgba(0, 0, 0, 0.3) !important; + border-bottom: 1px solid rgba(0, 0, 0, 0.3) !important; +} + +._d4i, ._f6s, .mentions-suggest-item, .mentions-suggest, .sharerAttachment, +.mToken, #addMembersTypeahead .mToken.mTokenWeakReference, .mQuestionsPollResultsBar, +._15q7, ._2q7v, ._4dwt ._16ii, ._3qdi::after, +._2q7w, .acy, ._58ak, ._3t_l, ._4msa, ._3h8i, ._3clk, ._1kt6, ._1ksq, +._1_y5, ._lr0, ._5hgt, ._2cpp, ._50uu, ._50uw, ._31yd, ._1e3d, ._3xz7, ._1xoz, +._4kcb, ._2lut, .jewel .touchable-notification.touched, .touchable-notification .touchable.touched, +.home-notification .touchable.touched, ._6beo ._6ber, +._73ku ._73jw, +._4e8n, ._uww, .mentions-placeholder, .mentions-shadow, .mentions-measurer, +._5whq, ._59tt, ._41ft::after, .jx-tokenizer, ._3uqf, ._4756, ._1rrd, ._5n_f { + border: 1px solid rgba(0, 0, 0, 0.3) !important; +} + +.mQuestionsPollResultsBar .shaded, ._1027._13sm { + border: 1px solid #000 !important; +} + +._3gka { + border: 1px dashed rgba(0, 0, 0, 0.3) !important; +} + +._4o58::after, .acr, ._t21, ._2bdb, +.acw, .aclb, ._4qax, ._5h8f { + border-color: rgba(0, 0, 0, 0.3) !important; +} + +._15ks ._15kl::before { + border-left: 1px solid transparent !important; +} + +._56bf, .touch .btn { + border-radius: 0 !important; + border: 0 !important; +} + +._2cis { + border-left: 10px solid #fafafa !important; + border-right: 10px solid #fafafa !important; +} + +._2cir.selected, ._42rv, ._5zma, ._2x2s { + border-bottom: 3px solid #000 !important; +} + +._1ss6 { + border-left: 2px solid #000 !important; +} + +._484w.selected > ._6zf, ._5kqs::after, ._3lvo ._5xum._5xuk, ._x0b { + border-bottom: 1px solid #000 !important; +} + +._34ee { + background: rgba(230, 230, 230, 0.35) !important; + color: #000 !important; +} + +._34em ._34ee { + background: #3b5998 !important; + color: #fff !important; +} + +._5as0, ._5cni, ._5as2 { + background: #fafafa !important; +} + +*, *::after, *::before { + text-shadow: none !important; + box-shadow: none !important; +} + +[data-sigil=m_login_upsell], +[data-sigil="m-loading-indicator-animate m-loading-indicator-root"] { + display: none !important; +} + +::-webkit-input-placeholder { + color: #000 !important; +} + +:-moz-placeholder { + color: #000 !important; +} + +::-moz-placeholder { + color: #000 !important; +} + +:-ms-input-placeholder { + color: #000 !important; +} + +.excessItem { + outline: rgba(0, 0, 0, 0.3) !important; +} + +._3m1m { + background: linear-gradient(transparent, #fafafa) !important; +} + +@-webkit-keyframes highlightFade { + 0%, 50% { + background: rgba(230, 230, 230, 0.35); + } + 100% { + background: #fafafa; + } +} +@-moz-keyframes highlightFade { + 0%, 50% { + background: rgba(230, 230, 230, 0.35); + } + 100% { + background: #fafafa; + } +} +@keyframes highlightFade { + 0%, 50% { + background: rgba(230, 230, 230, 0.35); + } + 100% { + background: #fafafa; + } +} +@-webkit-keyframes chatHighlightAnimation { + 0%, 100% { + background: #fafafa; + } + 50% { + background: rgba(230, 230, 230, 0.35); + } +} +@-moz-keyframes chatHighlightAnimation { + 0%, 100% { + background: #fafafa; + } + 50% { + background: rgba(230, 230, 230, 0.35); + } +} +@keyframes chatHighlightAnimation { + 0%, 100% { + background: #fafafa; + } + 50% { + background: rgba(230, 230, 230, 0.35); + } +} +._50uu { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 -10 50 50"%3E%3Ccircle cx="25" cy="23" r="3.2"/%3E%3Cpath d="M22 13l-1.83 2H17c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V17c0-1.1-.9-2-2-2h-3.17L28 13h-6zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"/%3E%3Cpath fill="none" d="M13 11h24v24H13z"/%3E%3C/svg%3E') no-repeat !important; +} + +._50uw { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 50 50"%3E%3Cpath fill="none" d="M13 26h24v24H13z"/%3E%3Cpath d="M30 31.5V28c0-.55-.45-1-1-1H17c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/%3E%3C/svg%3E') no-repeat !important; +} + +._15km ._15ko::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15ko._77la::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%233b5998" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kq::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 24 24"%3E%3Cpath d="M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z"/%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +._15km ._15kr::before { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23000" viewBox="0 0 24 24"%3E%3Cpath d="M14 9V5l7 7-7 7v-4.1c-5 0-8.5 1.6-11 5.1 1-5 4-10 11-11z"/%3E%3Cpath fill="none" d="M24 0H0v24h24z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} + +.story_body_container i.img[data-sigil*=story-popup-context] { + background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"%3E%3Cpath fill="none" d="M0 0h24v24H0z"/%3E%3Cpath fill="%23000" d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/%3E%3C/svg%3E') no-repeat !important; + background-position: center !important; +} diff --git a/app/src/web/assets/css/themes/material_light.scss b/app/src/web/assets/css/themes/material_light.scss new file mode 100644 index 00000000..7ec58463 --- /dev/null +++ b/app/src/web/assets/css/themes/material_light.scss @@ -0,0 +1,15 @@ +$text: #000; +$accent_text: #fff; +$link: #3b5998; +$accent: #3b5998; +$background: #fafafa; +// this is actually the inverse of material light (bg should be gray, cards should be white), +// but it looks better than the alternative +$background2: rgba(darken($background, 8%), 0.35); + +$bg_transparent: $background; + +$card: #fff; +$tint: #ddd; + +@import "../core/main"; \ No newline at end of file diff --git a/app/src/web/assets/js/click_a.js b/app/src/web/assets/js/click_a.js new file mode 100644 index 00000000..7faafc15 --- /dev/null +++ b/app/src/web/assets/js/click_a.js @@ -0,0 +1,55 @@ +"use strict"; +(function () { + var prevented = false; + var _frostAClick = function (e) { + // check for valid target + var target = e.target || e.currentTarget || e.srcElement; + if (!(target instanceof Element)) { + console.log("No element found"); + return; + } + var element = target; + // Notifications are two layers under + for (var i = 0; i < 2; i++) { + if (element.tagName !== 'A') { + element = element.parentElement; + } + } + if (element.tagName === 'A') { + if (!prevented) { + var url = element.getAttribute('href'); + if (!url || url === '#') { + return; + } + console.log("Click intercept " + url); + // If Frost is injected, check if loading the url through an overlay works + if (Frost.loadUrl(url)) { + e.stopPropagation(); + e.preventDefault(); + } + } + else { + console.log("Click intercept prevented"); + } + } + }; + /* + * On top of the click event, we must stop it for long presses + * Since that will conflict with the context menu + * Note that we only override it on conditions where the context menu + * Will occur + */ + var _frostPreventClick = function () { + console.log("Click _frostPrevented"); + prevented = true; + }; + document.addEventListener('click', _frostAClick, true); + var clickTimeout = undefined; + document.addEventListener('touchstart', function () { + clickTimeout = setTimeout(_frostPreventClick, 400); + }, true); + document.addEventListener('touchend', function () { + prevented = false; + clearTimeout(clickTimeout); + }, true); +}).call(undefined); diff --git a/app/src/web/assets/js/click_a.ts b/app/src/web/assets/js/click_a.ts new file mode 100644 index 00000000..5023610e --- /dev/null +++ b/app/src/web/assets/js/click_a.ts @@ -0,0 +1,57 @@ +(function () { + let prevented = false; + + const _frostAClick = (e: Event) => { + // check for valid target + const target = e.target || e.currentTarget || e.srcElement; + if (!(target instanceof Element)) { + console.log("No element found"); + return + } + let element: Element = target; + // Notifications are two layers under + for (let i = 0; i < 2; i++) { + if (element.tagName !== 'A') { + element = element.parentElement; + } + } + if (element.tagName === 'A') { + if (!prevented) { + const url = element.getAttribute('href'); + if (!url || url === '#') { + return + } + console.log(`Click intercept ${url}`); + // If Frost is injected, check if loading the url through an overlay works + if (Frost.loadUrl(url)) { + e.stopPropagation(); + e.preventDefault(); + } + } else { + console.log("Click intercept prevented") + } + } + }; + + /* + * On top of the click event, we must stop it for long presses + * Since that will conflict with the context menu + * Note that we only override it on conditions where the context menu + * Will occur + */ + const _frostPreventClick = () => { + console.log("Click _frostPrevented"); + prevented = true; + }; + + document.addEventListener('click', _frostAClick, true); + let clickTimeout: number | undefined = undefined; + document.addEventListener('touchstart', () => { + clickTimeout = setTimeout(_frostPreventClick, 400); + }, true); + document.addEventListener('touchend', () => { + prevented = false; + clearTimeout(clickTimeout) + }, true); +}).call(undefined); + diff --git a/app/src/web/assets/js/click_debugger.js b/app/src/web/assets/js/click_debugger.js new file mode 100644 index 00000000..aab4572d --- /dev/null +++ b/app/src/web/assets/js/click_debugger.js @@ -0,0 +1,14 @@ +"use strict"; +// For desktop only +(function () { + var _frostAContext = function (e) { + // Commonality; check for valid target + var element = e.target || e.currentTarget || e.srcElement; + if (!(element instanceof Element)) { + console.log("No element found"); + return; + } + console.log("Clicked element " + element.tagName + " " + element.className); + }; + document.addEventListener('contextmenu', _frostAContext, true); +}).call(undefined); diff --git a/app/src/web/assets/js/click_debugger.ts b/app/src/web/assets/js/click_debugger.ts new file mode 100644 index 00000000..088271fa --- /dev/null +++ b/app/src/web/assets/js/click_debugger.ts @@ -0,0 +1,15 @@ +// For desktop only + +(function () { + const _frostAContext = (e: Event) => { + // Commonality; check for valid target + const element = e.target || e.currentTarget || e.srcElement; + if (!(element instanceof Element)) { + console.log("No element found"); + return + } + console.log(`Clicked element ${element.tagName} ${element.className}`); + }; + + document.addEventListener('contextmenu', _frostAContext, true); +}).call(undefined); diff --git a/app/src/web/assets/js/context_a.js b/app/src/web/assets/js/context_a.js new file mode 100644 index 00000000..7e636cea --- /dev/null +++ b/app/src/web/assets/js/context_a.js @@ -0,0 +1,68 @@ +"use strict"; +/** + * Context menu for links + * Largely mimics click_a.js + */ +(function () { + var longClick = false; + var _frostAContext = function (e) { + Frost.longClick(true); + longClick = true; + /* + * Commonality; check for valid target + */ + var target = e.target || e.currentTarget || e.srcElement; + if (!(target instanceof Element)) { + console.log("No element found"); + return; + } + var element = target; + // Notifications are two layers under + for (var i = 0; i < 2; i++) { + if (element.tagName != 'A') { + element = element.parentElement; + } + } + if (element.tagName == 'A') { + var url = element.getAttribute('href'); + if (!url || url == '#') { + return; + } + var text = element.parentElement.innerText; + // Check if image item exists, first in children and then in parent + var image = element.querySelector("[style*=\"background-image: url(\"]"); + if (!image) { + image = element.parentElement.querySelector("[style*=\"background-image: url(\"]"); + } + if (image) { + var imageUrl = window.getComputedStyle(image, null).backgroundImage.trim().slice(4, -1); + console.log("Context image: " + imageUrl); + Frost.loadImage(imageUrl, text); + e.stopPropagation(); + e.preventDefault(); + return; + } + // Check if true img exists + var img = element.querySelector("img[src*=scontent]"); + if (img instanceof HTMLMediaElement) { + var imgUrl = img.src; + console.log("Context img: " + imgUrl); + Frost.loadImage(imgUrl, text); + e.stopPropagation(); + e.preventDefault(); + return; + } + console.log("Context content " + url + " " + text); + Frost.contextMenu(url, text); + e.stopPropagation(); + e.preventDefault(); + } + }; + document.addEventListener('contextmenu', _frostAContext, true); + document.addEventListener('touchend', function () { + if (longClick) { + Frost.longClick(false); + longClick = false; + } + }, true); +}).call(undefined); diff --git a/app/src/web/assets/js/context_a.ts b/app/src/web/assets/js/context_a.ts new file mode 100644 index 00000000..16ed33a9 --- /dev/null +++ b/app/src/web/assets/js/context_a.ts @@ -0,0 +1,69 @@ +/** + * Context menu for links + * Largely mimics click_a.js + */ +(function () { + let longClick = false; + const _frostAContext = (e: Event) => { + Frost.longClick(true); + longClick = true; + + /* + * Commonality; check for valid target + */ + const target = e.target || e.currentTarget || e.srcElement; + if (!(target instanceof Element)) { + console.log("No element found"); + return + } + let element: Element = target; + // Notifications are two layers under + for (let i = 0; i < 2; i++) { + if (element.tagName != 'A') { + element = element.parentElement; + } + } + if (element.tagName == 'A') { + const url = element.getAttribute('href'); + if (!url || url == '#') { + return + } + const text = (element.parentElement).innerText; + // Check if image item exists, first in children and then in parent + let image = element.querySelector("[style*=\"background-image: url(\"]"); + if (!image) { + image = (element.parentElement).querySelector("[style*=\"background-image: url(\"]") + } + if (image) { + const imageUrl = (window.getComputedStyle(image, null).backgroundImage).trim().slice(4, -1); + console.log(`Context image: ${imageUrl}`); + Frost.loadImage(imageUrl, text); + e.stopPropagation(); + e.preventDefault(); + return + } + // Check if true img exists + const img = element.querySelector("img[src*=scontent]"); + if (img instanceof HTMLMediaElement) { + const imgUrl = img.src; + console.log(`Context img: ${imgUrl}`); + Frost.loadImage(imgUrl, text); + e.stopPropagation(); + e.preventDefault(); + return + } + console.log(`Context content ${url} ${text}`); + Frost.contextMenu(url, text); + e.stopPropagation(); + e.preventDefault(); + } + }; + + document.addEventListener('contextmenu', _frostAContext, true); + document.addEventListener('touchend', () => { + if (longClick) { + Frost.longClick(false); + longClick = false + } + }, true); +}).call(undefined); diff --git a/app/src/web/assets/js/document_watcher.js b/app/src/web/assets/js/document_watcher.js new file mode 100644 index 00000000..f3c4ab25 --- /dev/null +++ b/app/src/web/assets/js/document_watcher.js @@ -0,0 +1,24 @@ +"use strict"; +// Emit key once half the viewport is covered +(function () { + var isReady = function () { + return document.body.scrollHeight > innerHeight + 100; + }; + if (isReady()) { + console.log('Already ready'); + Frost.isReady(); + return; + } + console.log('Injected document watcher'); + var observer = new MutationObserver(function () { + if (isReady()) { + observer.disconnect(); + Frost.isReady(); + console.log("Documented surpassed height in " + performance.now()); + } + }); + observer.observe(document, { + childList: true, + subtree: true + }); +}).call(undefined); diff --git a/app/src/web/assets/js/document_watcher.ts b/app/src/web/assets/js/document_watcher.ts new file mode 100644 index 00000000..e671149c --- /dev/null +++ b/app/src/web/assets/js/document_watcher.ts @@ -0,0 +1,27 @@ +// Emit key once half the viewport is covered +(function () { + const isReady = () => { + return document.body.scrollHeight > innerHeight + 100 + }; + + if (isReady()) { + console.log('Already ready'); + Frost.isReady(); + return + } + + console.log('Injected document watcher'); + + const observer = new MutationObserver(() => { + if (isReady()) { + observer.disconnect(); + Frost.isReady(); + console.log(`Documented surpassed height in ${performance.now()}`); + } + }); + + observer.observe(document, { + childList: true, + subtree: true + }) +}).call(undefined); diff --git a/app/src/web/assets/js/header_badges.js b/app/src/web/assets/js/header_badges.js new file mode 100644 index 00000000..daaf540a --- /dev/null +++ b/app/src/web/assets/js/header_badges.js @@ -0,0 +1,8 @@ +"use strict"; +// Fetches the header contents if it exists +(function () { + var header = document.getElementById('mJewelNav'); + if (header) { + Frost.handleHeader(header.outerHTML); + } +}).call(undefined); diff --git a/app/src/web/assets/js/header_badges.ts b/app/src/web/assets/js/header_badges.ts new file mode 100644 index 00000000..473749f2 --- /dev/null +++ b/app/src/web/assets/js/header_badges.ts @@ -0,0 +1,7 @@ +// Fetches the header contents if it exists +(function() { + const header = document.getElementById('mJewelNav'); + if (header) { + Frost.handleHeader(header.outerHTML); + } +}).call(undefined); diff --git a/app/src/web/assets/js/header_hider.js b/app/src/web/assets/js/header_hider.js new file mode 100644 index 00000000..faa9f66d --- /dev/null +++ b/app/src/web/assets/js/header_hider.js @@ -0,0 +1,12 @@ +"use strict"; +(function () { + var header = document.querySelector('#header'); + if (!header) { + return; + } + var jewel = header.querySelector('#mJewelNav'); + if (!jewel) { + return; + } + header.style.display = 'none'; +}).call(undefined); diff --git a/app/src/web/assets/js/header_hider.ts b/app/src/web/assets/js/header_hider.ts new file mode 100644 index 00000000..1a8f27f2 --- /dev/null +++ b/app/src/web/assets/js/header_hider.ts @@ -0,0 +1,17 @@ +(function () { + const header = document.querySelector('#header'); + + if (!header) { + return + } + + const jewel = header.querySelector('#mJewelNav'); + + if (!jewel) { + return + } + + (header).style.display = 'none' +}).call(undefined); + + diff --git a/app/src/web/assets/js/media.js b/app/src/web/assets/js/media.js new file mode 100644 index 00000000..571168d6 --- /dev/null +++ b/app/src/web/assets/js/media.js @@ -0,0 +1,43 @@ +"use strict"; +// Handles media events +(function () { + var _frostMediaClick = function (e) { + var target = e.target || e.srcElement; + if (!(target instanceof HTMLElement)) { + return; + } + var element = target; + var dataset = element.dataset; + if (!dataset || !dataset.sigil || dataset.sigil.toLowerCase().indexOf('inlinevideo') == -1) { + return; + } + var i = 0; + while (!element.hasAttribute('data-store')) { + if (++i > 2) { + return; + } + element = element.parentNode; + } + var store = element.dataset.store; + if (!store) { + return; + } + var dataStore; + try { + dataStore = JSON.parse(store); + } + catch (e) { + return; + } + var url = dataStore.src; + // !startsWith; see https://stackoverflow.com/a/36876507/4407321 + if (!url || url.lastIndexOf('http', 0) !== 0) { + return; + } + console.log("Inline video " + url); + if (Frost.loadVideo(url, dataStore.animatedGifVideo || false)) { + e.stopPropagation(); + } + }; + document.addEventListener('click', _frostMediaClick, true); +}).call(undefined); diff --git a/app/src/web/assets/js/media.ts b/app/src/web/assets/js/media.ts new file mode 100644 index 00000000..5b9b1a54 --- /dev/null +++ b/app/src/web/assets/js/media.ts @@ -0,0 +1,47 @@ +// Handles media events +(function () { + const _frostMediaClick = (e: Event) => { + const target = e.target || e.srcElement; + if (!(target instanceof HTMLElement)) { + return + } + let element: HTMLElement = target; + const dataset = element.dataset; + if (!dataset || !dataset.sigil || dataset.sigil.toLowerCase().indexOf('inlinevideo') == -1) { + return + } + let i = 0; + while (!element.hasAttribute('data-store')) { + if (++i > 2) { + return + } + element = element.parentNode; + } + const store = element.dataset.store; + if (!store) { + return + } + + let dataStore; + + try { + dataStore = JSON.parse(store) + } catch (e) { + return + } + + const url = dataStore.src; + + // !startsWith; see https://stackoverflow.com/a/36876507/4407321 + if (!url || url.lastIndexOf('http', 0) !== 0) { + return + } + + console.log(`Inline video ${url}`); + if (Frost.loadVideo(url, dataStore.animatedGifVideo || false)) { + e.stopPropagation() + } + }; + + document.addEventListener('click', _frostMediaClick, true); +}).call(undefined); diff --git a/app/src/web/assets/js/menu.js b/app/src/web/assets/js/menu.js new file mode 100644 index 00000000..c30e93cf --- /dev/null +++ b/app/src/web/assets/js/menu.js @@ -0,0 +1,57 @@ +"use strict"; +// Click menu and move contents to main view +(function () { + var viewport = document.querySelector("#viewport"); + var root = document.querySelector("#root"); + var bookmarkJewel = document.querySelector("#bookmarks_jewel"); + if (!viewport || !root || !bookmarkJewel) { + console.log('Menu.js: main elements not found'); + Frost.emit(0); + return; + } + var menuA = bookmarkJewel.querySelector("a"); + if (!menuA) { + console.log('Menu.js: menu links not found'); + Frost.emit(0); + return; + } + var jewel = document.querySelector('#mJewelNav'); + if (!jewel) { + console.log('Menu.js: jewel is null'); + return; + } + var y = new MutationObserver(function () { + viewport.removeAttribute('style'); + root.removeAttribute('style'); + }); + y.observe(viewport, { + attributes: true + }); + y.observe(root, { + attributes: true + }); + var x = new MutationObserver(function () { + var menu = document.querySelector('.mSideMenu'); + if (menu) { + x.disconnect(); + console.log("Found side menu"); + // Transfer elements + while (root.firstChild) { + root.removeChild(root.firstChild); + } + while (menu.childNodes.length) { + viewport.appendChild(menu.childNodes[0]); + } + Frost.emit(0); + setTimeout(function () { + y.disconnect(); + console.log('Unhook styler'); + }, 500); + } + }); + x.observe(jewel, { + childList: true, + subtree: true + }); + menuA.click(); +}).call(undefined); diff --git a/app/src/web/assets/js/menu.ts b/app/src/web/assets/js/menu.ts new file mode 100644 index 00000000..6f9dbf16 --- /dev/null +++ b/app/src/web/assets/js/menu.ts @@ -0,0 +1,59 @@ +// Click menu and move contents to main view +(function () { + const viewport = document.querySelector("#viewport"); + const root = document.querySelector("#root"); + const bookmarkJewel = document.querySelector("#bookmarks_jewel"); + if (!viewport || !root || !bookmarkJewel) { + console.log('Menu.js: main elements not found'); + Frost.emit(0); + return + } + const menuA = bookmarkJewel.querySelector("a"); + if (!menuA) { + console.log('Menu.js: menu links not found'); + Frost.emit(0); + return + } + const jewel = document.querySelector('#mJewelNav'); + if (!jewel) { + console.log('Menu.js: jewel is null'); + return + } + + const y = new MutationObserver(() => { + viewport.removeAttribute('style'); + root.removeAttribute('style'); + }); + + y.observe(viewport, { + attributes: true + }); + y.observe(root, { + attributes: true + }); + + const x = new MutationObserver(() => { + const menu = document.querySelector('.mSideMenu'); + if (menu) { + x.disconnect(); + console.log("Found side menu"); + // Transfer elements + while (root.firstChild) { + root.removeChild(root.firstChild); + } + while (menu.childNodes.length) { + viewport.appendChild(menu.childNodes[0]); + } + Frost.emit(0); + setTimeout(() => { + y.disconnect(); + console.log('Unhook styler'); + }, 500); + } + }); + x.observe(jewel, { + childList: true, + subtree: true + }); + menuA.click(); +}).call(undefined); diff --git a/app/src/web/assets/js/notif_msg.js b/app/src/web/assets/js/notif_msg.js new file mode 100644 index 00000000..20a89e88 --- /dev/null +++ b/app/src/web/assets/js/notif_msg.js @@ -0,0 +1,26 @@ +"use strict"; +// Binds callback to an invisible webview to take in the search events +(function () { + var finished = false; + var x = new MutationObserver(function () { + var _f_thread = document.querySelector('#threadlist_rows'); + if (!_f_thread) { + return; + } + console.log("Found message threads " + _f_thread.outerHTML); + Frost.handleHtml(_f_thread.outerHTML); + finished = true; + x.disconnect(); + }); + x.observe(document, { + childList: true, + subtree: true + }); + setTimeout(function () { + if (!finished) { + finished = true; + console.log('Message thread timeout cancellation'); + Frost.handleHtml(""); + } + }, 20000); +}).call(undefined); diff --git a/app/src/web/assets/js/notif_msg.ts b/app/src/web/assets/js/notif_msg.ts new file mode 100644 index 00000000..b7ce7a19 --- /dev/null +++ b/app/src/web/assets/js/notif_msg.ts @@ -0,0 +1,25 @@ +// Binds callback to an invisible webview to take in the search events +(function () { + let finished = false; + const x = new MutationObserver(() => { + const _f_thread = document.querySelector('#threadlist_rows'); + if (!_f_thread) { + return + } + console.log(`Found message threads ${_f_thread.outerHTML}`); + Frost.handleHtml(_f_thread.outerHTML); + finished = true; + x.disconnect(); + }); + x.observe(document, { + childList: true, + subtree: true + }); + setTimeout(() => { + if (!finished) { + finished = true; + console.log('Message thread timeout cancellation'); + Frost.handleHtml("") + } + }, 20000); +}).call(undefined); diff --git a/app/src/web/assets/js/textarea_listener.js b/app/src/web/assets/js/textarea_listener.js new file mode 100644 index 00000000..9a8783c1 --- /dev/null +++ b/app/src/web/assets/js/textarea_listener.js @@ -0,0 +1,31 @@ +"use strict"; +/* + * focus listener for textareas + * since swipe to refresh is quite sensitive, we will disable it + * when we detect a user typing + * note that this extends passed having a keyboard opened, + * as a user may still be reviewing his/her post + * swiping should automatically be reset on refresh + */ +(function () { + var _frostFocus = function (e) { + var element = e.target || e.srcElement; + if (!(element instanceof Element)) { + return; + } + console.log("FrostJSI focus, " + element.tagName); + if (element.tagName == 'TEXTAREA') { + Frost.disableSwipeRefresh(true); + } + }; + var _frostBlur = function (e) { + var element = e.target || e.srcElement; + if (!(element instanceof Element)) { + return; + } + console.log("FrostJSI blur, " + element.tagName); + Frost.disableSwipeRefresh(false); + }; + document.addEventListener("focus", _frostFocus, true); + document.addEventListener("blur", _frostBlur, true); +}).call(undefined); diff --git a/app/src/web/assets/js/textarea_listener.ts b/app/src/web/assets/js/textarea_listener.ts new file mode 100644 index 00000000..9d5fd388 --- /dev/null +++ b/app/src/web/assets/js/textarea_listener.ts @@ -0,0 +1,31 @@ +/* + * focus listener for textareas + * since swipe to refresh is quite sensitive, we will disable it + * when we detect a user typing + * note that this extends passed having a keyboard opened, + * as a user may still be reviewing his/her post + * swiping should automatically be reset on refresh + */ +(function () { + const _frostFocus = (e: Event) => { + const element = e.target || e.srcElement; + if (!(element instanceof Element)) { + return + } + console.log(`FrostJSI focus, ${element.tagName}`); + if (element.tagName == 'TEXTAREA') { + Frost.disableSwipeRefresh(true); + } + }; + + const _frostBlur = (e: Event) => { + const element = e.target || e.srcElement; + if (!(element instanceof Element)) { + return + } + console.log(`FrostJSI blur, ${element.tagName}`); + Frost.disableSwipeRefresh(false); + }; + document.addEventListener("focus", _frostFocus, true); + document.addEventListener("blur", _frostBlur, true); +}).call(undefined); diff --git a/app/src/web/assets/pgl.yoyo.org.txt b/app/src/web/assets/pgl.yoyo.org.txt new file mode 100644 index 00000000..63d6fa41 --- /dev/null +++ b/app/src/web/assets/pgl.yoyo.org.txt @@ -0,0 +1,2409 @@ +101com.com +101order.com +123found.com +180hits.de +180searchassistant.com +1x1rank.com +207.net +247media.com +24log.com +24log.de +24pm-affiliation.com +2mdn.net +2o7.net +360yield.com +4affiliate.net +4d5.net +50websads.com +518ad.com +51yes.com +600z.com +777partner.com +777seo.com +77tracking.com +7bpeople.com +7search.com +99count.com +a-ads.com +a-counter.kiev.ua +a.0day.kiev.ua +a.aproductmsg.com +a.collective-media.net +a.consumer.net +a.mktw.net +a.sakh.com +a.ucoz.net +a.ucoz.ru +a.xanga.com +a32.g.a.yimg.com +aaddzz.com +abacho.net +abc-ads.com +absoluteclickscom.com +abz.com +ac.rnm.ca +accounts.pkr.com.invalid +acsseo.com +actionsplash.com +actualdeals.com +acuityads.com +ad-balancer.at +ad-balancer.net +ad-center.com +ad-images.suntimes.com +ad-pay.de +ad-rotator.com +ad-server.gulasidorna.se +ad-serverparc.nl +ad-souk.com +ad-space.net +ad-tech.com +ad-up.com +ad.100.tbn.ru +ad.71i.de +ad.980x.com +ad.a8.net +ad.abcnews.com +ad.abctv.com +ad.about.com +ad.aboutit.de +ad.aboutwebservices.com +ad.abum.com +ad.afy11.net +ad.allstar.cz +ad.altervista.org +ad.amgdgt.com +ad.anuntis.com +ad.auditude.com +ad.bizo.com +ad.bnmla.com +ad.bondage.com +ad.caradisiac.com +ad.centrum.cz +ad.cgi.cz +ad.choiceradio.com +ad.clix.pt +ad.cooks.com +ad.crwdcntrl.net +ad.digitallook.com +ad.directrev.com +ad.doctissimo.fr +ad.domainfactory.de +ad.e-kolay.net +ad.eurosport.com +ad.f1cd.ru +ad.flurry.com +ad.foxnetworks.com +ad.freecity.de +ad.gate24.ch +ad.globe7.com +ad.grafika.cz +ad.hbv.de +ad.hodomobile.com +ad.httpool.com +ad.hyena.cz +ad.iinfo.cz +ad.ilove.ch +ad.infoseek.com +ad.jamba.net +ad.jamster.co.uk +ad.jetsoftware.com +ad.keenspace.com +ad.leadbolt.net +ad.liveinternet.ru +ad.lupa.cz +ad.m5prod.net +ad.media-servers.net +ad.mediastorm.hu +ad.mgd.de +ad.musicmatch.com +ad.nachtagenten.de +ad.nozonedata.com +ad.nttnavi.co.jp +ad.nwt.cz +ad.onad.eu +ad.pandora.tv +ad.playground.ru +ad.preferances.com +ad.profiwin.de +ad.prv.pl +ad.rambler.ru +ad.reunion.com +ad.scanmedios.com +ad.sensismediasmart.com.au +ad.seznam.cz +ad.simgames.net +ad.slutload.com +ad.smartclip.net +ad.tbn.ru +ad.technoratimedia.com +ad.thewheelof.com +ad.top50.to +ad.turn.com +ad.tv2.no +ad.twitchguru.com +ad.usatoday.com +ad.virtual-nights.com +ad.watch.impress.co.jp +ad.wavu.hu +ad.way.cz +ad.weatherbug.com +ad.wsod.com +ad.wz.cz +ad.yadro.ru +ad.yourmedia.com +ad.zanox.com +ad0.bigmir.net +ad01.mediacorpsingapore.com +ad1.emediate.dk +ad1.emule-project.org +ad1.kde.cz +ad1.pamedia.com.au +ad2.iinfo.cz +ad2.ip.ro +ad2.linxcz.cz +ad2.lupa.cz +ad2flash.com +ad2games.com +ad3.iinfo.cz +ad3.pamedia.com.au +ad4game.com +adaction.de +adadvisor.net +adap.tv +adapt.tv +adbanner.ro +adbard.net +adblade.com +adblockanalytics.com +adboost.de.vu +adboost.net +adbooth.net +adbot.com +adbrite.com +adbroker.de +adbunker.com +adbutler.com +adbutler.de +adbuyer.com +adbuyer3.lycos.com +adcash.com +adcast.deviantart.com +adcell.de +adcenter.mdf.se +adcenter.net +adcentriconline.com +adcept.net +adclick.com +adclient.uimserv.net +adclient1.tucows.com +adcloud.net +adcomplete.com +adconion.com +adcontent.gamespy.com +adcycle.com +add.newmedia.cz +addealing.com +addesktop.com +addfreestats.com +addme.com +adecn.com +ademails.com +adengage.com +adexpose.com +adext.inkclub.com +adf.ly +adfactor.nl +adfarm.mediaplex.com +adflight.com +adforce.com +adform.com +adgardener.com +adgoto.com +adgridwork.com +adhese.be +adhese.com +adi.mainichi.co.jp +adimage.asiaone.com.sg +adimage.guardian.co.uk +adimages.been.com +adimages.carsoup.com +adimages.go.com +adimages.homestore.com +adimages.omroepzeeland.nl +adimages.sanomawsoy.fi +adimg.cnet.com +adimg.com.com +adimg.uimserv.net +adimg1.chosun.com +adimgs.sapo.pt +adimpact.com +adinjector.net +adinterax.com +adisfy.com +adition.com +adition.de +adition.net +adizio.com +adjix.com +adjug.com +adjuggler.com +adjuggler.yourdictionary.com +adjustnetwork.com +adk2.com +adk2ads.tictacti.com +adland.ru +adlantic.nl +adledge.com +adlegend.com +adlink.de +adlog.com.com +adloox.com +adlooxtracking.com +adlure.net +admagnet.net +admailtiser.com +adman.gr +adman.in.gr +adman.otenet.gr +admanagement.ch +admanager.btopenworld.com +admanager.carsoup.com +admarketplace.net +admarvel.com +admax.nexage.com +admedia.com +admedia.ro +admeld.com +admerize.be +admeta.com +admex.com +adminder.com +adminshop.com +admized.com +admob.com +admonitor.com +admotion.com.ar +adnet-media.net +adnet.asahi.com +adnet.biz +adnet.de +adnet.ru +adnet.worldreviewer.com +adnetinteractive.com +adnetwork.net +adnetworkperformance.com +adnews.maddog2000.de +adnotch.com +adnxs.com +adocean.pl +adonspot.com +adoperator.com +adorigin.com +adpepper.dk +adpepper.nl +adperium.com +adpia.vn +adplus.co.id +adplxmd.com +adprofile.net +adprojekt.pl +adq.nextag.com +adrazzi.com +adreactor.com +adremedy.com +adreporting.com +adres.internet.com +adrevolver.com +adriver.ru +adrolays.de +adrotate.de +adrotator.se +ads-click.com +ads.4tube.com +ads.5ci.lt +ads.abovetopsecret.com +ads.aceweb.net +ads.activestate.com +ads.adfox.ru +ads.administrator.de +ads.adshareware.net +ads.adultfriendfinder.com +ads.adultswim.com +ads.advance.net +ads.adverline.com +ads.affiliates.match.com +ads.ak.facebook.com.edgesuite.net +ads.allvatar.com +ads.alt.com +ads.alwayson-network.com +ads.amdmb.com +ads.amigos.com +ads.aol.co.uk +ads.aol.com +ads.apn.co.nz +ads.appsgeyser.com +ads.as4x.tmcs.net +ads.as4x.tmcs.ticketmaster.com +ads.asia1.com.sg +ads.asiafriendfinder.com +ads.ask.com +ads.aspalliance.com +ads.avazu.net +ads.batpmturner.com +ads.beenetworks.net +ads.belointeractive.com +ads.berlinonline.de +ads.betanews.com +ads.betfair.com +ads.betfair.com.au +ads.bigchurch.com +ads.bigfoot.com +ads.billiton.de +ads.bing.com +ads.bittorrent.com +ads.blog.com +ads.bloomberg.com +ads.bluelithium.com +ads.bluemountain.com +ads.bluesq.com +ads.bonniercorp.com +ads.boylesports.com +ads.brabys.com +ads.brain.pk +ads.brazzers.com +ads.bumq.com +ads.businessweek.com +ads.canalblog.com +ads.canoe.ca +ads.casinocity.com +ads.cbc.ca +ads.cc +ads.cc-dt.com +ads.centraliprom.com +ads.cgnetworks.com +ads.channel4.com +ads.cimedia.com +ads.clearchannel.com +ads.co.com +ads.com.com +ads.contactmusic.com +ads.contentabc.com +ads.contextweb.com +ads.crakmedia.com +ads.creative-serving.com +ads.creativematch.com +ads.cricbuzz.com +ads.cybersales.cz +ads.dada.it +ads.datinggold.com +ads.datingyes.com +ads.dazoot.ro +ads.deltha.hu +ads.dennisnet.co.uk +ads.desmoinesregister.com +ads.detelefoongids.nl +ads.deviantart.com +ads.digital-digest.com +ads.digitalmedianet.com +ads.digitalpoint.com +ads.directionsmag.com +ads.domeus.com +ads.eagletribune.com +ads.easy-forex.com +ads.eatinparis.com +ads.economist.com +ads.edbindex.dk +ads.egrana.com.br +ads.einmedia.com +ads.electrocelt.com +ads.elitetrader.com +ads.emirates.net.ae +ads.epltalk.com +ads.esmas.com +ads.eu.msn.com +ads.exactdrive.com +ads.expat-blog.biz +ads.expedia.com +ads.ezboard.com +ads.factorymedia.com +ads.fairfax.com.au +ads.faxo.com +ads.ferianc.com +ads.filmup.com +ads.financialcontent.com +ads.flooble.com +ads.fool.com +ads.footymad.net +ads.forbes.com +ads.forbes.net +ads.forium.de +ads.fortunecity.com +ads.fotosidan.se +ads.foxkidseurope.net +ads.foxnetworks.com +ads.foxnews.com +ads.freecity.de +ads.friendfinder.com +ads.ft.com +ads.futurenet.com +ads.gamecity.net +ads.gameforgeads.de +ads.gamershell.com +ads.gamespyid.com +ads.gamigo.de +ads.gaming-universe.de +ads.gawker.com +ads.geekswithblogs.net +ads.glispa.com +ads.globeandmail.com +ads.gmodules.com +ads.godlikeproductions.com +ads.goyk.com +ads.gplusmedia.com +ads.gradfinder.com +ads.grindinggears.com +ads.groundspeak.com +ads.gsm-exchange.com +ads.gsmexchange.com +ads.guardian.co.uk +ads.guardianunlimited.co.uk +ads.guru3d.com +ads.hardwaresecrets.com +ads.harpers.org +ads.hbv.de +ads.hearstmags.com +ads.heartlight.org +ads.heias.com +ads.hideyourarms.com +ads.hollywood.com +ads.horsehero.com +ads.horyzon-media.com +ads.iafrica.com +ads.ibest.com.br +ads.ibryte.com +ads.icq.com +ads.ign.com +ads.img.co.za +ads.imgur.com +ads.indiatimes.com +ads.infi.net +ads.internic.co.il +ads.ipowerweb.com +ads.isoftmarketing.com +ads.itv.com +ads.iwon.com +ads.jewishfriendfinder.com +ads.jiwire.com +ads.jobsite.co.uk +ads.jpost.com +ads.jubii.dk +ads.justhungry.com +ads.kaktuz.net +ads.kelbymediagroup.com +ads.kinobox.cz +ads.kinxxx.com +ads.kompass.com +ads.krawall.de +ads.lesbianpersonals.com +ads.linuxfoundation.org +ads.linuxjournal.com +ads.linuxsecurity.com +ads.livenation.com +ads.mariuana.it +ads.massinfra.nl +ads.mcafee.com +ads.mediaodyssey.com +ads.mediaturf.net +ads.medienhaus.de +ads.mgnetwork.com +ads.mmania.com +ads.moceanads.com +ads.motor-forum.nl +ads.motormedia.nl +ads.msn.com +ads.multimania.lycos.fr +ads.nationalgeographic.com +ads.ncm.com +ads.netclusive.de +ads.netmechanic.com +ads.networksolutions.com +ads.newdream.net +ads.newgrounds.com +ads.newmedia.cz +ads.newsint.co.uk +ads.newsquest.co.uk +ads.ninemsn.com.au +ads.nj.com +ads.nola.com +ads.nordichardware.com +ads.nordichardware.se +ads.nwsource.com +ads.nyi.net +ads.nytimes.com +ads.nyx.cz +ads.nzcity.co.nz +ads.o2.pl +ads.oddschecker.com +ads.okcimg.com +ads.ole.com +ads.olivebrandresponse.com +ads.oneplace.com +ads.ookla.com +ads.optusnet.com.au +ads.outpersonals.com +ads.p161.net +ads.passion.com +ads.pennet.com +ads.penny-arcade.com +ads.pheedo.com +ads.phpclasses.org +ads.pickmeup-ltd.com +ads.pkr.com +ads.planet.nl +ads.pni.com +ads.pof.com +ads.powweb.com +ads.primissima.it +ads.printscr.com +ads.prisacom.com +ads.program3.com +ads.psd2html.com +ads.pushplay.com +ads.quoka.de +ads.rcs.it +ads.recoletos.es +ads.rediff.com +ads.redlightcenter.com +ads.redtube.com +ads.resoom.de +ads.returnpath.net +ads.rottentomatoes.com +ads.rpgdot.com +ads.s3.sitepoint.com +ads.satyamonline.com +ads.savannahnow.com +ads.saymedia.com +ads.scifi.com +ads.seniorfriendfinder.com +ads.sexinyourcity.com +ads.shizmoo.com +ads.shopstyle.com +ads.sift.co.uk +ads.silverdisc.co.uk +ads.slim.com +ads.smartclick.com +ads.soft32.com +ads.space.com +ads.spoonfeduk.com +ads.sptimes.com +ads.stackoverflow.com +ads.stationplay.com +ads.struq.com +ads.sun.com +ads.supplyframe.com +ads.t-online.de +ads.tahono.com +ads.techtv.com +ads.techweb.com +ads.telegraph.co.uk +ads.theglobeandmail.com +ads.themovienation.com +ads.thestar.com +ads.timeout.com +ads.tjwi.info +ads.tmcs.net +ads.totallyfreestuff.com +ads.townhall.com +ads.trinitymirror.co.uk +ads.tripod.com +ads.tripod.lycos.co.uk +ads.tripod.lycos.de +ads.tripod.lycos.es +ads.tripod.lycos.it +ads.tripod.lycos.nl +ads.tripod.spray.se +ads.tso.dennisnet.co.uk +ads.uknetguide.co.uk +ads.ultimate-guitar.com +ads.uncrate.com +ads.undertone.com +ads.usatoday.com +ads.v3.com +ads.verticalresponse.com +ads.vgchartz.com +ads.videosz.com +ads.virtual-nights.com +ads.virtualcountries.com +ads.vnumedia.com +ads.waps.cn +ads.wapx.cn +ads.weather.ca +ads.web.aol.com +ads.web.cs.com +ads.web.de +ads.webmasterpoint.org +ads.websiteservices.com +ads.whi.co.nz +ads.whoishostingthis.com +ads.wiezoekje.nl +ads.wikia.nocookie.net +ads.wineenthusiast.com +ads.wunderground.com +ads.wwe.biz +ads.xhamster.com +ads.xtra.co.nz +ads.y-0.net +ads.yimg.com +ads.yldmgrimg.net +ads.yourfreedvds.com +ads.youtube.com +ads.zdnet.com +ads.ztod.com +ads03.redtube.com +ads1.canoe.ca +ads1.mediacapital.pt +ads1.msn.com +ads1.rne.com +ads1.theglobeandmail.com +ads1.virtual-nights.com +ads10.speedbit.com +ads180.com +ads2.brazzers.com +ads2.clearchannel.com +ads2.contentabc.com +ads2.gamecity.net +ads2.jubii.dk +ads2.net-communities.co.uk +ads2.oneplace.com +ads2.rne.com +ads2.virtual-nights.com +ads2.xnet.cz +ads2004.treiberupdate.de +ads3.contentabc.com +ads3.gamecity.net +ads3.virtual-nights.com +ads4.clearchannel.com +ads4.gamecity.net +ads4.virtual-nights.com +ads4homes.com +ads5.canoe.ca +ads5.virtual-nights.com +ads6.gamecity.net +ads7.gamecity.net +ads8.com +adsatt.abc.starwave.com +Adsatt.ABCNews.starwave.com +adsatt.espn.go.com +adsatt.espn.starwave.com +Adsatt.go.starwave.com +adsby.bidtheatre.com +adscale.de +adscholar.com +adscience.nl +adscpm.com +adsdaq.com +adsdk.com +adsend.de +adserv.evo-x.de +adserv.gamezone.de +adserv.iafrica.com +adserv.qconline.com +adserv.quality-channel.de +adserve.ams.rhythmxchange.com +adserver-live.yoc.mobi +adserver.43plc.com +adserver.71i.de +adserver.adultfriendfinder.com +adserver.aidameter.com +adserver.aol.fr +adserver.barrapunto.com +adserver.beggarspromo.com +adserver.betandwin.de +adserver.bing.com +adserver.bizhat.com +adserver.break-even.it +adserver.cams.com +adserver.clashmusic.com +adserver.com +adserver.digitoday.com +adserver.dotcommedia.de +adserver.finditquick.com +adserver.flossiemediagroup.com +adserver.freecity.de +adserver.freenet.de +adserver.friendfinder.com +adserver.hardsextube.com +adserver.hardwareanalysis.com +adserver.html.it +adserver.irishwebmasterforum.com +adserver.janes.com +adserver.kyoceramita-europe.com +adserver.libero.it +adserver.news.com.au +adserver.ngz-network.de +adserver.nydailynews.com +adserver.o2.pl +adserver.oddschecker.com +adserver.omroepzeeland.nl +adserver.pl +adserver.portalofevil.com +adserver.portugalmail.net +adserver.portugalmail.pt +adserver.quizdingo.com +adserver.realhomesex.net +adserver.sanomawsoy.fi +adserver.sciflicks.com +adserver.sharewareonline.com +adserver.spankaway.com +adserver.startnow.com +adserver.theonering.net +adserver.twitpic.com +adserver.viagogo.com +adserver.virginmedia.com +adserver.yahoo.com +adserver01.de +adserver1-images.backbeatmedia.com +adserver1.backbeatmedia.com +adserver1.mindshare.de +adserver1.mokono.com +adserver1.ogilvy-interactive.de +adserver2.mindshare.de +adserver2.popdata.de +adserverplus.com +adserversolutions.com +adservinginternational.com +adsfac.eu +adsfac.net +adsfac.us +adshost1.com +adside.com +adsk2.co +adskape.ru +adsklick.de +adsmarket.com +adsmart.co.uk +adsmart.com +adsmart.net +adsmogo.com +adsnative.com +adsoftware.com +adsoldier.com +adsonar.com +adspace.ro +adspeed.net +adspirit.de +adsponse.de +adsremote.scrippsnetworks.com +adsrevenue.net +adsrv.deviantart.com +adsrv.eacdn.com +adsrv.iol.co.za +adsrvr.org +adsstat.com +adstat.4u.pl +adstest.weather.com +adsupply.com +adsupplyads.com +adswitcher.com +adsymptotic.com +adsynergy.com +adsys.townnews.com +adsystem.simplemachines.org +adtech.de +adtechus.com +adtegrity.net +adthis.com +adtiger.de +adtoll.com +adtology.com +adtoma.com +adtrace.org +adtrade.net +adtrading.de +adtrak.net +adtriplex.com +adultadvertising.com +adv-adserver.com +adv-banner.libero.it +adv.cooperhosting.net +adv.freeonline.it +adv.hwupgrade.it +adv.livedoor.com +adv.webmd.com +adv.wp.pl +adv.yo.cz +advariant.com +adventory.com +advert.bayarea.com +advert.dyna.ultraweb.hu +adverticum.com +adverticum.net +adverticus.de +advertise.com +advertiseireland.com +advertisespace.com +advertising.com +advertising.guildlaunch.net +advertisingbanners.com +advertisingbox.com +advertmarket.com +advertmedia.de +advertpro.sitepoint.com +advertpro.ya.com +adverts.carltononline.com +advertserve.com +advertstream.com +advertwizard.com +advideo.uimserv.net +adview.ppro.de +advisormedia.cz +adviva.com +adviva.net +advnt.com +adwareremovergold.com +adwhirl.com +adwitserver.com +adworldnetwork.com +adworx.at +adworx.be +adworx.nl +adx.allstar.cz +adx.atnext.com +adxpansion.com +adxpose.com +adxvalue.com +adyea.com +adzerk.net +adzerk.s3.amazonaws.com +adzones.com +af-ad.co.uk +affbuzzads.com +affili.net +affiliate.1800flowers.com +affiliate.7host.com +affiliate.doubleyourdating.com +affiliate.dtiserv.com +affiliate.gamestop.com +affiliate.mercola.com +affiliate.mogs.com +affiliate.offgamers.com +affiliate.travelnow.com +affiliate.viator.com +affiliatefuel.com +affiliatefuture.com +affiliates.allposters.com +affiliates.babylon.com +affiliates.devilfishpartners.com +affiliates.digitalriver.com +affiliates.globat.com +affiliates.ige.com +affiliates.internationaljock.com +affiliates.jlist.com +affiliates.streamray.com +affiliates.thinkhost.net +affiliates.thrixxx.com +affiliates.ultrahosting.com +affiliatetracking.com +affiliatetracking.net +affiliatewindow.com +affiliation-france.com +afftracking.justanswer.com +ah-ha.com +ahalogy.com +aidu-ads.de +aim4media.com +aistat.net +aktrack.pubmatic.com +alclick.com +alenty.com +alexa-sitestats.s3.amazonaws.com +all4spy.com +alladvantage.com +allosponsor.com +amazingcounters.com +amazon-adsystem.com +amung.us +an.tacoda.net +anahtars.com +analytics.adpost.org +analytics.google.com +analytics.live.com +analytics.yahoo.com +anm.intelli-direct.com +annonser.dagbladet.no +apex-ad.com +api.intensifier.de +apture.com +arc1.msn.com +arcadebanners.com +ard.xxxblackbook.com +are-ter.com +as.webmd.com +as1.advfn.com +as2.advfn.com +as5000.com +assets1.exgfnetwork.com +assoc-amazon.com +at-adserver.alltop.com +atdmt.com +athena-ads.wikia.com +atwola.com +auctionads.com +auctionads.net +audience2media.com +audit.median.hu +audit.webinform.hu +auto-bannertausch.de +autohits.dk +avenuea.com +avpa.javalobby.org +avres.net +avsads.com +awempire.com +awin1.com +aylarl.com +azfront.com +b-1st.com +b.aol.com +b.engadget.com +ba.afl.rakuten.co.jp +babs.tv2.dk +backbeatmedia.com +banik.redigy.cz +banner-exchange-24.de +banner.ad.nu +banner.alphacool.de +banner.ambercoastcasino.com +banner.blogranking.net +banner.buempliz-online.ch +banner.casino.net +banner.casinodelrio.com +banner.cotedazurpalace.com +banner.coza.com +banner.cz +banner.easyspace.com +banner.elisa.net +banner.eurogrand.com +banner.featuredusers.com +banner.getgo.de +banner.goldenpalace.com +banner.img.co.za +banner.inyourpocket.com +banner.jobsahead.com +banner.joylandcasino.com +banner.kiev.ua +banner.linux.se +banner.media-system.de +banner.mindshare.de +banner.nixnet.cz +banner.noblepoker.com +banner.northsky.com +banner.orb.net +banner.penguin.cz +banner.prestigecasino.com +banner.rbc.ru +banner.relcom.ru +banner.tanto.de +banner.titan-dsl.de +banner.vadian.net +banner.webmersion.com +banner.wirenode.com +bannerads.de +bannerboxes.com +bannercommunity.de +bannerconnect.com +bannerconnect.net +bannerexchange.cjb.net +bannerflow.com +bannergrabber.internet.gr +bannerhost.com +bannerimage.com +bannerlandia.com.ar +bannermall.com +bannermarkt.nl +bannerpower.com +banners.adultfriendfinder.com +banners.amigos.com +banners.apnuk.com +banners.asiafriendfinder.com +banners.audioholics.com +banners.babylon-x.com +banners.bol.com.br +banners.cams.com +banners.clubseventeen.com +banners.czi.cz +banners.dine.com +banners.direction-x.com +banners.directnic.com +banners.easydns.com +banners.ebay.com +banners.freett.com +banners.friendfinder.com +banners.getiton.com +banners.iq.pl +banners.isoftmarketing.com +banners.lifeserv.com +banners.linkbuddies.com +banners.passion.com +banners.resultonline.com +banners.sexsearch.com +banners.sys-con.com +banners.thomsonlocal.com +banners.videosz.com +banners.virtuagirlhd.com +banners.wunderground.com +bannerserver.com +bannersgomlm.com +bannershotlink.perfectgonzo.com +bannersng.yell.com +bannerspace.com +bannerswap.com +bannery.cz +bannieres.acces-contenu.com +bans.adserver.co.il +bans.bride.ru +barnesandnoble.bfast.com +baypops.com +bbelements.com +bbn.img.com.ua +begun.ru +belstat.com +belstat.nl +berp.com +best-pr.info +best-top.ro +bestsearch.net +bhclicks.com +bidclix.com +bidclix.net +bidtrk.com +bidvertiser.com +bigads.guj.de +bigbangmedia.com +bigclicks.com +billboard.cz +bitads.net +bitmedianetwork.com +bizad.nikkeibp.co.jp +bizrate.com +blast4traffic.com +blingbucks.com +blogads.com +blogcounter.de +blogherads.com +blogrush.com +blogtoplist.se +blogtopsites.com +blueadvertise.com +bluekai.com +bluelithium.com +bluewhaleweb.com +bm.annonce.cz +bn.bfast.com +boersego-ads.de +boldchat.com +boom.ro +boomads.com +boost-my-pr.de +box.anchorfree.net +bpath.com +braincash.com +brandreachsys.com +bravenet.com.invalid +bridgetrack.com +brightinfo.com +british-banners.com +bs.yandex.ru +budsinc.com +bullseye.backbeatmedia.com +buyhitscheap.com +buysellads.com +buzzonclick.com +bvalphaserver.com +bwp.download.com +c.bigmir.net +c.compete.com +c1.nowlinux.com +campaign.bharatmatrimony.com +caniamedia.com +carbonads.com +carbonads.net +casalemedia.com +casalmedia.com +cash4members.com +cash4popup.de +cashcrate.com +cashengines.com +cashfiesta.com +cashlayer.com +cashpartner.com +casinogames.com +casinopays.com +casinorewards.com +casinotraffic.com +casinotreasure.com +cbanners.virtuagirlhd.com +cben1.net +cbmall.com +cbx.net +cdn.freefacti.com +cecash.com +ceskydomov.alias.ngs.modry.cz +cetrk.com +cgicounter.puretec.de +ch.questionmarket.com +channelintelligence.com +chart.dk +chartbeat.com +chartbeat.net +checkm8.com +checkstat.nl +chestionar.ro +chitika.net +cibleclick.com +cityads.telus.net +cj.com +cjbmanagement.com +cjlog.com +claria.com +class-act-clicks.com +click.absoluteagency.com +click.fool.com +click.kmindex.ru +click2freemoney.com +click2paid.com +clickability.com +clickadz.com +clickagents.com +clickbank.com +clickbank.net +clickbooth.com +clickboothlnk.com +clickbrokers.com +clickcompare.co.uk +clickdensity.com +clickedyclick.com +clickhereforcellphones.com +clickhouse.com +clickhype.com +clicklink.jp +clickmedia.ro +clicks.equantum.com +clicks.mods.de +clickserve.cc-dt.com +clicksor.com +clicktag.de +clickthrucash.com +clickthruserver.com +clickthrutraffic.com +clicktrace.info +clicktrack.ziyu.net +clicktracks.com +clicktrade.com +clickxchange.com +clickz.com +clickzxc.com +clicmanager.fr +clients.tbo.com +clixgalore.com +clkads.com +clkrev.com +cluster.adultworld.com +clustrmaps.com +cmpstar.com +cnomy.com +cnt.spbland.ru +cnt1.pocitadlo.cz +code-server.biz +colonize.com +comclick.com +commindo-media-ressourcen.de +commissionmonster.com +compactbanner.com +comprabanner.it +connextra.com +contaxe.de +content.acc-hd.de +content.ad +contextweb.com +conversantmedia.com +conversionruler.com +cookies.cmpnet.com +coremetrics.com +count.rbc.ru +count.rin.ru +count.west263.com +counted.com +counter.avtoindex.com +counter.bloke.com +counter.cnw.cz +counter.cz +counter.dreamhost.com +counter.fateback.com +counter.mirohost.net +counter.mojgorod.ru +counter.nowlinux.com +counter.rambler.ru +counter.search.bg +counter.sparklit.com +counter.yadro.ru +counters.honesty.com +counting.kmindex.ru +counts.tucows.com +coupling-media.de +cpalead.com +cpays.com +cpmaffiliation.com +cpmstar.com +cpxadroit.com +cpxinteractive.com +cqcounter.com +crakmedia.com +craktraffic.com +crawlability.com +crazypopups.com +creafi-online-media.com +creative.ak.facebook.com +creative.whi.co.nz +creatives.as4x.tmcs.net +creatives.livejasmin.com +crispads.com +criteo.com +crowdgravity.com +crtv.mate1.com +crwdcntrl.net +ctnetwork.hu +cubics.com +customad.cnn.com +cyberbounty.com +cybermonitor.com +d.adroll.com +dakic-ia-300.com +danban.com +dapper.net +datashreddergold.com +dbbsrv.com +dc-storm.com +de17a.com +dealdotcom.com +debtbusterloans.com +decknetwork.net +deloo.de +demandbase.com +depilflash.tv +di1.shopping.com +dialerporn.com +didtheyreadit.com +direct-xxx-access.com +directaclick.com +directivepub.com +directleads.com +directorym.com +directtrack.com +discountclick.com +displayadsmedia.com +displaypagerank.com +dist.belnk.com +dmtracker.com +dmtracking.alibaba.com +dmtracking2.alibaba.com +dnads.directnic.com +domaining.in +domainsponsor.com +domainsteam.de +doubleclick.com +doubleclick.de +doubleclick.net +doublepimp.com +drumcash.com +dynamic.fmpub.net +e-adimages.scrippsnetworks.com +e-bannerx.com +e-debtconsolidation.com +e-m.fr +e-n-t-e-r-n-e-x.com +e-planning.net +e.kde.cz +eadexchange.com +eas.almamedia.fi +easyhits4u.com +ebayadvertising.com +ebocornac.com +ebuzzing.com +ecircle-ag.com +eclick.vn +ecoupons.com +edgeio.com +effectivemeasure.com +effectivemeasure.net +eiv.baidu.com +elitedollars.com +elitetoplist.com +emarketer.com +emediate.dk +emediate.eu +emonitor.takeit.cz +engine.awaps.net +engine.espace.netavenir.com +enginenetwork.com +enoratraffic.com +enquisite.com +entercasino.com +entrecard.s3.amazonaws.com +epiccash.com +eqads.com +ero-advertising.com +esellerate.net +estat.com +etahub.com +etargetnet.com +ethicalads.net +etracker.de +eu-adcenter.net +eu1.madsone.com +eur.a1.yimg.com +eurekster.com +euro-linkindex.de +euroclick.com +european-toplist.de +euroranking.de +euros4click.de +eusta.de +evergage.com +evidencecleanergold.com +ewebcounter.com +exchange-it.com +exchange.bg +exchangead.com +exchangeclicksonline.com +exit76.com +exitexchange.com +exitfuel.com +exoclick.com +exogripper.com +experteerads.com +exponential.com +express-submit.de +extractorandburner.com +extreme-dm.com +extremetracking.com +eyeblaster.com +eyereturn.com +eyeviewads.com +eyewonder.com +ezula.com +f5biz.com +fast-adv.it +fastclick.com +fastclick.com.edgesuite.net +fastclick.net +fb-promotions.com +fc.webmasterpro.de +feedbackresearch.com +feedjit.com +ffxcam.fairfax.com.au +fimc.net +fimserve.com +findcommerce.com +findyourcasino.com +fineclicks.com +first.nova.cz +firstlightera.com +flashtalking.com +fleshlightcash.com +flexbanner.com +flowgo.com +flurry.com +fonecta.leiki.com +foo.cosmocode.de +forex-affiliate.net +fpctraffic.com +fpctraffic2.com +fragmentserv.iac-online.de +free-banners.com +freebanner.com +freelogs.com +freeonlineusers.com +freepay.com +freestats.com +freestats.tv +freewebcounter.com +funklicks.com +funpageexchange.com +fusionads.net +fusionquest.com +fxclix.com +fxstyle.net +galaxien.com +game-advertising-online.com +gamehouse.com +gamesites100.net +gamesites200.com +gamesitestop100.com +gator.com +gbanners.hornymatches.com +gemius.pl +geo.digitalpoint.com +geobanner.adultfriendfinder.com +geovisite.com +german-linkindex.de +getclicky.com +globalismedia.com +globaltakeoff.net +globaltrack.com +globe7.com +globus-inter.com +gmads.net +go-clicks.de +go-rank.de +goingplatinum.com +gold.weborama.fr +goldstats.com +google-analytics.com +googleadservices.com +googlesyndication.com +gostats.com +gp.dejanews.com +gpr.hu +grafstat.ro +grapeshot.co.uk +greystripe.com +gtop.ro +gtop100.com +harrenmedia.com +harrenmedianetwork.com +havamedia.net +heias.com +hentaicounter.com +herbalaffiliateprogram.com +hexusads.fluent.ltd.uk +heyos.com +hgads.com +hidden.gogoceleb.com +hightrafficads.com +histats.com +hit-parade.com +hit-ranking.de +hit.bg +hit.ua +hit.webcentre.lycos.co.uk +hitbox.com +hitcents.com +hitexchange.net +hitfarm.com +hitiz.com +hitlist.ru +hitlounge.com +hitometer.com +hits.europuls.eu +hits.informer.com +hits.puls.lv +hits.theguardian.com +hits4me.com +hits4pay.com +hitslink.com +hittail.com +hollandbusinessadvertising.nl +homepageking.de +hostedads.realitykings.com +hotkeys.com +hotlog.ru +hotrank.com.tw +htmlhubing.xyz +httpool.com +hurricanedigitalmedia.com +hydramedia.com +hyperbanner.net +hypertracker.com +i-clicks.net +i.xx.openx.com +i1img.com +i1media.no +ia.iinfo.cz +iad.anm.co.uk +iadnet.com +iasds01.com +iconadserver.com +icptrack.com +idcounter.com +identads.com +idot.cz +idregie.com +idtargeting.com +ientrymail.com +iesnare.com +ifa.tube8live.com +ilbanner.com +ilead.itrack.it +iliillliO00OO0.321.cn +ilovecheating.com +imageads.canoe.ca +imagecash.net +images-pw.secureserver.net +images.v3.com +imarketservices.com +img.prohardver.hu +imgpromo.easyrencontre.com +imitrk.com +imonitor.nethost.cz +imprese.cz +impressionmedia.cz +impressionz.co.uk +imrworldwide.com +inboxdollars.com +incentaclick.com +indexstats.com +indieclick.com +industrybrains.com +inetlog.ru +infinite-ads.com +infinityads.com +infolinks.com +information.com +inringtone.com +insightexpress.com +insightexpressai.com +inspectorclick.com +instantmadness.com +intelliads.com +intellitxt.com +interactive.forthnet.gr +intergi.com +internetfuel.com +interreklame.de +interstat.hu +ip.ro +ip193.cn +iperceptions.com +ipro.com +ireklama.cz +itfarm.com +itop.cz +its-that-easy.com +itsptp.com +jcount.com +jinkads.de +joetec.net +jokedollars.com +js.users.51.la +juicyads.com +jumptap.com +justrelevant.com +justwebads.com +k.iinfo.cz +kanoodle.com +keymedia.hu +kindads.com +kissmetrics.com +kliks.nl +komoona.com +kompasads.com +kontera.com +kt-g.de +ktu.sv2.biz +lakequincy.com +layer-ad.de +layer-ads.de +lbn.ru +lct.salesforce.com +lead-analytics.nl +leadaffiliates.com +leadboltads.net +leadclick.com +leadingedgecash.com +leadzupc.com +leanoisgo.com +levelrate.de +lfstmedia.com +liftdna.com +ligatus.com +ligatus.de +lightningcast.net +lightspeedcash.com +link-booster.de +link4ads.com +linkadd.de +linkbuddies.com +linkexchange.com +linkexchange.ru +linkprice.com +linkrain.com +linkreferral.com +links-ranking.de +linkshighway.com +linkshighway.net +linkstorms.com +linkswaper.com +linktarget.com +liquidad.narrowcastmedia.com +liveintent.com +liverail.com +loading321.com +log.btopenworld.com +logua.com +lop.com +lucidmedia.com +lzjl.com +m.webtrends.com +m1.webstats4u.com +m4n.nl +madclient.uimserv.net +madisonavenue.com +mads.cnet.com +madvertise.de +marchex.com +market-buster.com +marketing.888.com +marketing.hearstmagazines.nl +marketing.nyi.net +marketing.osijek031.com +marketingsolutions.yahoo.com +maroonspider.com +mas.sector.sk +mastermind.com +matchcraft.com +mathtag.com +max.i12.de +maximumcash.com +mbn.com.ua +mbs.megaroticlive.com +mbuyu.nl +mdotm.com +measuremap.com +media-adrunner.mycomputer.com +media-servers.net +media.ftv-publicite.fr +media.funpic.de +media6degrees.com +mediaarea.eu +mediacharger.com +mediadvertising.ro +mediageneral.com +mediamath.com +mediamgr.ugo.com +mediaplazza.com +mediaplex.com +mediascale.de +mediatext.com +mediax.angloinfo.com +mediaz.angloinfo.com +medleyads.com +medyanetads.com +megacash.de +megago.com +megastats.com +megawerbung.de +memorix.sdv.fr +metaffiliation.com +metanetwork.com +methodcash.com +metrics.windowsitpro.com +mgid.com +miarroba.com +microstatic.pl +microticker.com +midnightclicking.com +misstrends.com +mixpanel.com +mixtraffic.com +mlm.de +mmismm.com +mmtro.com +moatads.com +mobclix.com +mocean.mobi +moneyexpert.com +monsterpops.com +mopub.com +mouseflow.com +mpstat.us +mr-rank.de +mrskincash.com +mtree.com +musiccounter.ru +muwmedia.com +myaffiliateprogram.com +mybloglog.com +mycounter.ua +mypagerank.net +mypagerank.ru +mypowermall.com +mystat-in.net +mystat.pl +mytop-in.net +n69.com +naiadsystems.com +naj.sk +namimedia.com +nastydollars.com +navigator.io +navrcholu.cz +nbjmp.com +ndparking.com +nedstat.com +nedstat.nl +nedstatbasic.net +nedstatpro.net +nend.net +neocounter.neoworx-blog-tools.net +neoffic.com +net-filter.com +netaffiliation.com +netagent.cz +netclickstats.com +netcommunities.com +netdirect.nl +netflame.cc +netincap.com +netpool.netbookia.net +netshelter.net +network.business.com +neudesicmediagroup.com +newads.bangbros.com +newbie.com +newnet.qsrch.com +newnudecash.com +newopenx.detik.com +newt1.adultadworld.com +newt1.adultworld.com +newtopsites.com +ng3.ads.warnerbros.com +ngs.impress.co.jp +nitroclicks.com +novem.pl +nuggad.net +numax.nu-1.com +nuseek.com +oas.benchmark.fr +oas.foxnews.com +oas.repubblica.it +oas.roanoke.com +oas.salon.com +oas.toronto.com +oas.uniontrib.com +oas.villagevoice.com +oascentral.businessweek.com +oascentral.chicagobusiness.com +oascentral.fortunecity.com +oascentral.register.com +oewa.at +oewabox.at +offerforge.com +offermatica.com +olivebrandresponse.com +omniture.com +onclasrv.com +onclickads.net +oneandonlynetwork.com +onenetworkdirect.com +onestat.com +onestatfree.com +onewaylinkexchange.net +online-metrix.net +onlinecash.com +onlinecashmethod.com +onlinerewardcenter.com +openad.tf1.fr +openad.travelnow.com +openads.friendfinder.com +openads.org +openclick.com +openx.angelsgroup.org.uk +openx.blindferret.com +opienetwork.com +optimost.com +optmd.com +ordingly.com +ota.cartrawler.com +otto-images.developershed.com +outbrain.com +overture.com +owebmoney.ru +oxado.com +oxcash.com +oxen.hillcountrytexas.com +p.adpdx.com +pagead.l.google.com +pagefair.com +pagerank-estate-spb.ru +pagerank-ranking.com +pagerank-ranking.de +pagerank-server7.de +pagerank-submitter.com +pagerank-submitter.de +pagerank-suchmaschine.de +pagerank-united.de +pagerank4u.eu +pagerank4you.com +pageranktop.com +partage-facile.com +partner-ads.com +partner.pelikan.cz +partner.topcities.com +partnerad.l.google.com +partnercash.de +partners.priceline.com +passion-4.net +pay-ads.com +paycounter.com +paypopup.com +payserve.com +pbnet.ru +pcash.imlive.com +peep-auktion.de +peer39.com +pennyweb.com +pepperjamnetwork.com +percentmobile.com +perf.weborama.fr +perfectaudience.com +perfiliate.com +performancerevenue.com +performancerevenues.com +performancing.com +pgmediaserve.com +pgpartner.com +pheedo.com +phoenix-adrunner.mycomputer.com +phpadsnew.new.natuurpark.nl +phpmyvisites.net +picadmedia.com +pillscash.com +pimproll.com +pixel.adsafeprotected.com +pixel.jumptap.com +planetactive.com +play4traffic.com +playhaven.com +plista.com +plugrush.com +pointroll.com +pop-under.ru +popads.net +popub.com +popunder.ru +popup.msn.com +popupmoney.com +popupnation.com +popups.infostart.com +popuptraffic.com +porngraph.com +porntrack.com +postrelease.com +potenza.cz +pr-star.de +pr-ten.de +pr5dir.com +praddpro.de +prchecker.info +precisioncounter.com +predictad.com +premium-offers.com +primaryads.com +primetime.net +privatecash.com +pro-advertising.com +pro.i-doctor.co.kr +proext.com +profero.com +projectwonderful.com +promo.badoink.com +promo.ulust.com +promo1.webcams.nl +promobenef.com +promos.fling.com +promote.pair.com +promotion-campaigns.com +pronetadvertising.com +propellerads.com +proranktracker.com +proton-tm.com +protraffic.com +provexia.com +prsitecheck.com +psstt.com +pub.chez.com +pub.club-internet.fr +pub.hardware.fr +pub.realmedia.fr +pubdirecte.com +publicidad.elmundo.es +pubmatic.com +pubs.lemonde.fr +pulse360.com +q.azcentral.com +qctop.com +qnsr.com +quantcast.com +quantserve.com +quarterserver.de +questaffiliates.net +quigo.com +quinst.com +quisma.com +rad.msn.com +radar.cedexis.com +radarurl.com +radiate.com +rampidads.com +rank-master.com +rank-master.de +rankchamp.de +ranking-charts.de +ranking-hits.de +ranking-id.de +ranking-links.de +ranking-liste.de +ranking-street.de +rankingchart.de +rankingscout.com +rankyou.com +rapidcounter.com +rate.ru +ratings.lycos.com +rb1.design.ru +re-directme.com +reachjunction.com +reactx.com +readserver.net +realcastmedia.com +realclix.com +realmedia-a800.d4p.net +realtechnetwork.com +realtracker.com +reduxmedia.com +reduxmediagroup.com +reedbusiness.com +reefaquarium.biz +referralware.com +regnow.com +reinvigorate.net +reklam.rfsl.se +reklama.mironet.cz +reklama.reflektor.cz +reklamcsere.hu +reklame.unwired-i.net +reklamer.com.ua +relevanz10.de +relmaxtop.com +remotead.cnet.com +republika.onet.pl +retargeter.com +revenue.net +revenuedirect.com +revsci.net +revstats.com +richmails.com +richmedia.yimg.com +richwebmaster.com +rightstats.com +rlcdn.com +rle.ru +rmads.msn.com +rmedia.boston.com +roar.com +robotreplay.com +roia.biz +rok.com.com +rose.ixbt.com +rotabanner.com +roxr.net +rtbpop.com +rtbpopd.com +ru-traffic.com +ru4.com +rubiconproject.com +s.adroll.com +s2d6.com +sageanalyst.net +sbx.pagesjaunes.fr +scambiobanner.aruba.it +scanscout.com +scopelight.com +scorecardresearch.com +scratch2cash.com +scripte-monster.de +searchfeast.com +searchmarketing.com +searchramp.com +secure.webconnect.net +sedoparking.com +sedotracker.com +seeq.com.invalid +sensismediasmart.com.au +seo4india.com +serv0.com +servedbyadbutler.com +servedbyopenx.com +servethis.com +services.hearstmags.com +serving-sys.com +sexaddpro.de +sexadvertentiesite.nl +sexcounter.com +sexinyourcity.com +sexlist.com +sextracker.com +sexystat.com +sezwho.com +shareadspace.com +shareasale.com +sharepointads.com +sher.index.hu +shinystat.com +shinystat.it +shoppingads.com +siccash.com +sidebar.angelfire.com +sinoa.com +sitebrand.geeks.com +sitemerkezi.net +sitemeter.com +sitestat.com +sixsigmatraffic.com +skylink.vn +slickaffiliate.com +slopeaota.com +sma.punto.net +smart4ads.com +smartadserver.com +smartbase.cdnservices.com +smowtion.com +snapads.com +snoobi.com +socialspark.com +softclick.com.br +spacash.com +sparkstudios.com +specificmedia.co.uk +specificpop.com +spezialreporte.de +spinbox.techtracker.com +spinbox.versiontracker.com +sponsorads.de +sponsorpro.de +sponsors.thoughtsmedia.com +spot.fitness.com +spotxchange.com +sprinks-clicks.about.com +spylog.com +spywarelabs.com +spywarenuker.com +spywords.com +srbijacafe.org +srwww1.com +starffa.com +start.freeze.com +stat.cliche.se +stat.dealtime.com +stat.dyna.ultraweb.hu +stat.pl +stat.su +stat.tudou.com +stat.webmedia.pl +stat.zenon.net +stat24.com +stat24.meta.ua +statcounter.com +static.fmpub.net +static.itrack.it +staticads.btopenworld.com +statistik-gallup.net +statm.the-adult-company.com +stats.blogger.com +stats.cts-bv.nl +stats.directnic.com +stats.hyperinzerce.cz +stats.mirrorfootball.co.uk +stats.olark.com +stats.suite101.com +stats.surfaid.ihost.com +stats.townnews.com +stats.unwired-i.net +stats.wordpress.com +stats.x14.eu +stats4all.com +statsie.com +statxpress.com +steelhouse.com +steelhousemedia.com +stickyadstv.com +suavalds.com +subscribe.hearstmags.com +sugoicounter.com +superclix.de +superstats.com +supertop.ru +supertop100.com +suptullog.com +surfmusik-adserver.de +swissadsolutions.com +swordfishdc.com +sx.trhnt.com +t.insigit.com +t.pusk.ru +taboola.com +tacoda.net +tagular.com +tailsweep.co.uk +tailsweep.com +tailsweep.se +takru.com +tangerinenet.biz +tapad.com +targad.de +targetingnow.com +targetnet.com +targetpoint.com +tatsumi-sys.jp +tcads.net +techclicks.net +teenrevenue.com +teliad.de +text-link-ads.com +textad.sexsearch.com +textads.biz +textads.opera.com +textlinks.com +tfag.de +theadhost.com +theads.me +thebugs.ws +thecounter.com +therapistla.com +therichkids.com +thrnt.com +thruport.com +tinybar.com +tizers.net +tlvmedia.com +tntclix.co.uk +top-casting-termine.de +top-site-list.com +top.list.ru +top.mail.ru +top.proext.com +top100-images.rambler.ru +top100.mafia.ru +top123.ro +top20.com +top20free.com +top90.ro +topbarh.box.sk +topblogarea.se +topbucks.com +topforall.com +topgamesites.net +toplist.cz +toplist.pornhost.com +toplista.mw.hu +toplistcity.com +topmmorpgsites.com +topping.com.ua +toprebates.com +topsafelist.net +topsearcher.com +topsir.com +topsite.lv +topsites.com.br +topstats.com +totemcash.com +touchclarity.com +touchclarity.natwest.com +tour.brazzers.com +tpnads.com +track.adform.net +track.anchorfree.com +track.gawker.com +trackalyzer.com +tracker.icerocket.com +tracker.marinsm.com +tracking.crunchiemedia.com +tracking.gajmp.com +tracking.internetstores.de +tracking.yourfilehost.com +tracking101.com +trackingsoft.com +trackmysales.com +tradeadexchange.com +tradedoubler.com +traffic-exchange.com +traffic.liveuniversenetwork.com +trafficadept.com +trafficcdn.liveuniversenetwork.com +trafficfactory.biz +trafficholder.com +traffichunt.com +trafficjunky.net +trafficleader.com +trafficsecrets.com +trafficspaces.net +trafficstrategies.com +trafficswarm.com +traffictrader.net +trafficz.com +trafficz.net +traffiq.com +trafic.ro +travis.bosscasinos.com +trekblue.com +trekdata.com +trendcounter.com +trhunt.com +tribalfusion.com +trix.net +truehits.net +truehits1.gits.net.th +truehits2.gits.net.th +tsms-ad.tsms.com +tubedspots.com +tubemogul.com +turn.com +tvas-a.pw +tvas-c.pw +tvmtracker.com +twittad.com +tyroo.com +uarating.com +ukbanners.com +ultramercial.com +ultsearch.com +unanimis.co.uk +untd.com +updated.com +urlcash.net +us.a1.yimg.com +usapromotravel.com +usmsad.tom.com +utarget.co.uk +utils.mediageneral.net +v1.cnzz.com +validclick.com +valuead.com +valueclick.com +valueclickmedia.com +valuecommerce.com +valuesponsor.com +veille-referencement.com +ventivmedia.com +vericlick.com +vertadnet.com +veruta.com +vervewireless.com +vibrantmedia.com +video-stats.video.google.com +videoegg.com +view4cash.de +viewpoint.com +visistat.com +visit.webhosting.yahoo.com +visitbox.de +visual-pagerank.fr +visualrevenue.com +voicefive.com +vpon.com +vrs.cz +vs.tucows.com +vungle.com +wads.webteh.com +warlog.info +warlog.ru +wdads.sx.atl.publicus.com +web-stat.com +web.informer.com +web2.deja.com +webads.co.nz +webads.nl +webangel.ru +webcash.nl +webcounter.cz +webcounter.goweb.de +webgains.com +webmaster-partnerprogramme24.de +webmasterplan.com +webmasterplan.de +weborama.fr +webpower.com +webreseau.com +webseoanalytics.com +websponsors.com +webstat.channel4.com +webstat.com +webstat.net +webstats4u.com +webtrackerplus.com +webtraffic.se +webtraxx.de +webtrendslive.com +wegcash.com +werbung.meteoxpress.com +wetrack.it +whaleads.com +whenu.com +whispa.com +whoisonline.net +wholesaletraffic.info +widespace.com +widgetbucks.com +wikia-ads.wikia.com +window.nixnet.cz +wintricksbanner.googlepages.com +witch-counter.de +wlmarketing.com +wmirk.ru +wonderlandads.com +wondoads.de +woopra.com +worldwide-cash.net +wtlive.com +www-banner.chat.ru +www-google-analytics.l.google.com +www.banner-link.com.br +www.dnps.com +www.kaplanindex.com +www.money4exit.de +www.photo-ads.co.uk +www1.gto-media.com +www8.glam.com +x-traceur.com +x6.yakiuchi.com +xchange.ro +xclicks.net +xertive.com +xg4ken.com +xiti.com +xplusone.com +xponsor.com +xq1.net +xrea.com +xtendmedia.com +xtremetop100.com +xxxcounter.com +xxxmyself.com +y.ibsys.com +yab-adimages.s3.amazonaws.com +yabuka.com +yadro.ru +yesads.com +yesadvertising.com +yieldads.com +yieldlab.net +yieldmanager.com +yieldmanager.net +yieldtraffic.com +yoc.mobi +yoggrt.com +z5x.net +zangocash.com +zanox-affiliate.de +zanox.com +zantracker.com +zedo.com +zencudo.co.uk +zenkreka.com +zenzuu.com +zeus.developershed.com +zeusclicks.com +zintext.com +zmedia.com \ No newline at end of file diff --git a/app/src/web/assets/typings/frost.d.ts b/app/src/web/assets/typings/frost.d.ts new file mode 100644 index 00000000..a3591f66 --- /dev/null +++ b/app/src/web/assets/typings/frost.d.ts @@ -0,0 +1,27 @@ +declare interface FrostJSI { + loadUrl(url: string | null): boolean + + loadVideo(url: string | null, isGif: boolean): boolean + + reloadBaseUrl(animate: boolean) + + contextMenu(url: string, text: string | null) + + longClick(start: boolean) + + disableSwipeRefresh(disable: boolean) + + loadLogin() + + loadImage(imageUrl: string, text: string | null) + + emit(flag: number) + + isReady() + + handleHtml(html: string | null) + + handleHeader(html: string | null) +} + +declare var Frost: FrostJSI; diff --git a/app/src/web/package.json b/app/src/web/package.json new file mode 100644 index 00000000..c80696b3 --- /dev/null +++ b/app/src/web/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "typescript": "^3.3.1" + } +} diff --git a/app/src/web/tsconfig.json b/app/src/web/tsconfig.json new file mode 100644 index 00000000..711fdcbb --- /dev/null +++ b/app/src/web/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es3", + "allowJs": true, + "skipLibCheck": true, +// "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", +// "resolveJsonModule": true, + "isolatedModules": false, +// "noEmit": true, + // Extras + "strictNullChecks": true, + "noImplicitAny": true, + "allowUnreachableCode": true, + "allowUnusedLabels": true + }, + "include": [ + "assets/js", "assets/typings" + ] +} -- cgit v1.2.3 From 87469aba96cee61b4252d9a6d023324598355244 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 5 Feb 2019 22:40:24 -0500 Subject: Strip images and update context handler --- app/src/main/res/xml/frost_changelog.xml | 4 +- app/src/web/assets/js/click_a.js | 9 --- app/src/web/assets/js/click_debugger.js | 2 - app/src/web/assets/js/context_a.js | 100 ++++++++++++++------------ app/src/web/assets/js/context_a.ts | 108 +++++++++++++++++++---------- app/src/web/assets/js/document_watcher.js | 1 - app/src/web/assets/js/header_badges.js | 1 - app/src/web/assets/js/media.js | 2 - app/src/web/assets/js/menu.js | 2 - app/src/web/assets/js/notif_msg.js | 1 - app/src/web/assets/js/textarea_listener.js | 8 --- app/src/web/tsconfig.json | 3 +- 12 files changed, 133 insertions(+), 108 deletions(-) (limited to 'app') diff --git a/app/src/main/res/xml/frost_changelog.xml b/app/src/main/res/xml/frost_changelog.xml index f90ecf37..ed014604 100644 --- a/app/src/main/res/xml/frost_changelog.xml +++ b/app/src/main/res/xml/frost_changelog.xml @@ -8,8 +8,8 @@ - - + + diff --git a/app/src/web/assets/js/click_a.js b/app/src/web/assets/js/click_a.js index 7faafc15..be69bb8c 100644 --- a/app/src/web/assets/js/click_a.js +++ b/app/src/web/assets/js/click_a.js @@ -2,14 +2,12 @@ (function () { var prevented = false; var _frostAClick = function (e) { - // check for valid target var target = e.target || e.currentTarget || e.srcElement; if (!(target instanceof Element)) { console.log("No element found"); return; } var element = target; - // Notifications are two layers under for (var i = 0; i < 2; i++) { if (element.tagName !== 'A') { element = element.parentElement; @@ -22,7 +20,6 @@ return; } console.log("Click intercept " + url); - // If Frost is injected, check if loading the url through an overlay works if (Frost.loadUrl(url)) { e.stopPropagation(); e.preventDefault(); @@ -33,12 +30,6 @@ } } }; - /* - * On top of the click event, we must stop it for long presses - * Since that will conflict with the context menu - * Note that we only override it on conditions where the context menu - * Will occur - */ var _frostPreventClick = function () { console.log("Click _frostPrevented"); prevented = true; diff --git a/app/src/web/assets/js/click_debugger.js b/app/src/web/assets/js/click_debugger.js index aab4572d..16729899 100644 --- a/app/src/web/assets/js/click_debugger.js +++ b/app/src/web/assets/js/click_debugger.js @@ -1,8 +1,6 @@ "use strict"; -// For desktop only (function () { var _frostAContext = function (e) { - // Commonality; check for valid target var element = e.target || e.currentTarget || e.srcElement; if (!(element instanceof Element)) { console.log("No element found"); diff --git a/app/src/web/assets/js/context_a.js b/app/src/web/assets/js/context_a.js index 7e636cea..0573a17a 100644 --- a/app/src/web/assets/js/context_a.js +++ b/app/src/web/assets/js/context_a.js @@ -1,61 +1,75 @@ "use strict"; -/** - * Context menu for links - * Largely mimics click_a.js - */ (function () { var longClick = false; + var _frostCopyPost = function (e, target) { + if (target.tagName != 'A') { + return false; + } + var parent1 = target.parentElement; + if (!parent1 || parent1.tagName != 'DIV') { + return false; + } + var parent2 = parent1.parentElement; + if (!parent2 || !parent2.classList.contains('story_body_container')) { + return false; + } + var url = target.getAttribute('href'); + var text = parent1.innerText; + Frost.contextMenu(url, text); + return true; + }; + var _frostImage = function (e, target) { + var element = target; + for (var i = 0; i < 2; i++) { + if (element.tagName != 'A') { + element = element.parentElement; + } + } + if (element.tagName != 'A') { + return false; + } + var url = element.getAttribute('href'); + if (!url || url == '#') { + return false; + } + var text = element.parentElement.innerText; + var image = element.querySelector("[style*=\"background-image: url(\"]"); + if (!image) { + image = element.parentElement.querySelector("[style*=\"background-image: url(\"]"); + } + if (image) { + var imageUrl = window.getComputedStyle(image, null).backgroundImage.trim().slice(4, -1); + console.log("Context image: " + imageUrl); + Frost.loadImage(imageUrl, text); + return true; + } + var img = element.querySelector("img[src*=scontent]"); + if (img instanceof HTMLMediaElement) { + var imgUrl = img.src; + console.log("Context img: " + imgUrl); + Frost.loadImage(imgUrl, text); + return true; + } + console.log("Context content " + url + " " + text); + Frost.contextMenu(url, text); + return true; + }; + var handlers = [_frostCopyPost, _frostImage]; var _frostAContext = function (e) { Frost.longClick(true); longClick = true; - /* - * Commonality; check for valid target - */ var target = e.target || e.currentTarget || e.srcElement; if (!(target instanceof Element)) { console.log("No element found"); return; } - var element = target; - // Notifications are two layers under - for (var i = 0; i < 2; i++) { - if (element.tagName != 'A') { - element = element.parentElement; - } - } - if (element.tagName == 'A') { - var url = element.getAttribute('href'); - if (!url || url == '#') { - return; - } - var text = element.parentElement.innerText; - // Check if image item exists, first in children and then in parent - var image = element.querySelector("[style*=\"background-image: url(\"]"); - if (!image) { - image = element.parentElement.querySelector("[style*=\"background-image: url(\"]"); - } - if (image) { - var imageUrl = window.getComputedStyle(image, null).backgroundImage.trim().slice(4, -1); - console.log("Context image: " + imageUrl); - Frost.loadImage(imageUrl, text); - e.stopPropagation(); - e.preventDefault(); - return; - } - // Check if true img exists - var img = element.querySelector("img[src*=scontent]"); - if (img instanceof HTMLMediaElement) { - var imgUrl = img.src; - console.log("Context img: " + imgUrl); - Frost.loadImage(imgUrl, text); + for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) { + var h = handlers_1[_i]; + if (h(e, target)) { e.stopPropagation(); e.preventDefault(); return; } - console.log("Context content " + url + " " + text); - Frost.contextMenu(url, text); - e.stopPropagation(); - e.preventDefault(); } }; document.addEventListener('contextmenu', _frostAContext, true); diff --git a/app/src/web/assets/js/context_a.ts b/app/src/web/assets/js/context_a.ts index 16ed33a9..06d2f4a2 100644 --- a/app/src/web/assets/js/context_a.ts +++ b/app/src/web/assets/js/context_a.ts @@ -2,8 +2,78 @@ * Context menu for links * Largely mimics click_a.js */ + (function () { let longClick = false; + + /** + * Given event and target, return true if handled and false otherwise. + */ + type EventHandler = (e: Event, target: Element) => Boolean + + /** + * Posts should click a tag, with two parents up being div.story_body_container + */ + const _frostCopyPost: EventHandler = (e, target) => { + if (target.tagName != 'A') { + return false; + } + const parent1 = target.parentElement; + if (!parent1 || parent1.tagName != 'DIV') { + return false; + } + const parent2 = parent1.parentElement; + if (!parent2 || !parent2.classList.contains('story_body_container')) { + return false; + } + const url = target.getAttribute('href')!; + const text = parent1.innerText; + Frost.contextMenu(url, text); + return true; + }; + + const _frostImage: EventHandler = (e, target) => { + let element: Element = target; + // Notifications are two layers under + for (let i = 0; i < 2; i++) { + if (element.tagName != 'A') { + element = element.parentElement; + } + } + if (element.tagName != 'A') { + return false + } + const url = element.getAttribute('href'); + if (!url || url == '#') { + return false + } + const text = (element.parentElement).innerText; + // Check if image item exists, first in children and then in parent + let image = element.querySelector("[style*=\"background-image: url(\"]"); + if (!image) { + image = (element.parentElement).querySelector("[style*=\"background-image: url(\"]") + } + if (image) { + const imageUrl = (window.getComputedStyle(image, null).backgroundImage).trim().slice(4, -1); + console.log(`Context image: ${imageUrl}`); + Frost.loadImage(imageUrl, text); + return true + } + // Check if true img exists + const img = element.querySelector("img[src*=scontent]"); + if (img instanceof HTMLMediaElement) { + const imgUrl = img.src; + console.log(`Context img: ${imgUrl}`); + Frost.loadImage(imgUrl, text); + return true + } + console.log(`Context content ${url} ${text}`); + Frost.contextMenu(url, text); + return true + }; + + const handlers = [_frostCopyPost, _frostImage]; + const _frostAContext = (e: Event) => { Frost.longClick(true); longClick = true; @@ -16,46 +86,12 @@ console.log("No element found"); return } - let element: Element = target; - // Notifications are two layers under - for (let i = 0; i < 2; i++) { - if (element.tagName != 'A') { - element = element.parentElement; - } - } - if (element.tagName == 'A') { - const url = element.getAttribute('href'); - if (!url || url == '#') { - return - } - const text = (element.parentElement).innerText; - // Check if image item exists, first in children and then in parent - let image = element.querySelector("[style*=\"background-image: url(\"]"); - if (!image) { - image = (element.parentElement).querySelector("[style*=\"background-image: url(\"]") - } - if (image) { - const imageUrl = (window.getComputedStyle(image, null).backgroundImage).trim().slice(4, -1); - console.log(`Context image: ${imageUrl}`); - Frost.loadImage(imageUrl, text); - e.stopPropagation(); - e.preventDefault(); - return - } - // Check if true img exists - const img = element.querySelector("img[src*=scontent]"); - if (img instanceof HTMLMediaElement) { - const imgUrl = img.src; - console.log(`Context img: ${imgUrl}`); - Frost.loadImage(imgUrl, text); + for (const h of handlers) { + if (h(e, target)) { e.stopPropagation(); e.preventDefault(); return } - console.log(`Context content ${url} ${text}`); - Frost.contextMenu(url, text); - e.stopPropagation(); - e.preventDefault(); } }; diff --git a/app/src/web/assets/js/document_watcher.js b/app/src/web/assets/js/document_watcher.js index f3c4ab25..12252201 100644 --- a/app/src/web/assets/js/document_watcher.js +++ b/app/src/web/assets/js/document_watcher.js @@ -1,5 +1,4 @@ "use strict"; -// Emit key once half the viewport is covered (function () { var isReady = function () { return document.body.scrollHeight > innerHeight + 100; diff --git a/app/src/web/assets/js/header_badges.js b/app/src/web/assets/js/header_badges.js index daaf540a..b1ceee05 100644 --- a/app/src/web/assets/js/header_badges.js +++ b/app/src/web/assets/js/header_badges.js @@ -1,5 +1,4 @@ "use strict"; -// Fetches the header contents if it exists (function () { var header = document.getElementById('mJewelNav'); if (header) { diff --git a/app/src/web/assets/js/media.js b/app/src/web/assets/js/media.js index 571168d6..baeba0a1 100644 --- a/app/src/web/assets/js/media.js +++ b/app/src/web/assets/js/media.js @@ -1,5 +1,4 @@ "use strict"; -// Handles media events (function () { var _frostMediaClick = function (e) { var target = e.target || e.srcElement; @@ -30,7 +29,6 @@ return; } var url = dataStore.src; - // !startsWith; see https://stackoverflow.com/a/36876507/4407321 if (!url || url.lastIndexOf('http', 0) !== 0) { return; } diff --git a/app/src/web/assets/js/menu.js b/app/src/web/assets/js/menu.js index c30e93cf..b6a30209 100644 --- a/app/src/web/assets/js/menu.js +++ b/app/src/web/assets/js/menu.js @@ -1,5 +1,4 @@ "use strict"; -// Click menu and move contents to main view (function () { var viewport = document.querySelector("#viewport"); var root = document.querySelector("#root"); @@ -35,7 +34,6 @@ if (menu) { x.disconnect(); console.log("Found side menu"); - // Transfer elements while (root.firstChild) { root.removeChild(root.firstChild); } diff --git a/app/src/web/assets/js/notif_msg.js b/app/src/web/assets/js/notif_msg.js index 20a89e88..bcff697b 100644 --- a/app/src/web/assets/js/notif_msg.js +++ b/app/src/web/assets/js/notif_msg.js @@ -1,5 +1,4 @@ "use strict"; -// Binds callback to an invisible webview to take in the search events (function () { var finished = false; var x = new MutationObserver(function () { diff --git a/app/src/web/assets/js/textarea_listener.js b/app/src/web/assets/js/textarea_listener.js index 9a8783c1..02336382 100644 --- a/app/src/web/assets/js/textarea_listener.js +++ b/app/src/web/assets/js/textarea_listener.js @@ -1,12 +1,4 @@ "use strict"; -/* - * focus listener for textareas - * since swipe to refresh is quite sensitive, we will disable it - * when we detect a user typing - * note that this extends passed having a keyboard opened, - * as a user may still be reviewing his/her post - * swiping should automatically be reset on refresh - */ (function () { var _frostFocus = function (e) { var element = e.target || e.srcElement; diff --git a/app/src/web/tsconfig.json b/app/src/web/tsconfig.json index 711fdcbb..ea88e28e 100644 --- a/app/src/web/tsconfig.json +++ b/app/src/web/tsconfig.json @@ -16,7 +16,8 @@ "strictNullChecks": true, "noImplicitAny": true, "allowUnreachableCode": true, - "allowUnusedLabels": true + "allowUnusedLabels": true, + "removeComments": true }, "include": [ "assets/js", "assets/typings" -- cgit v1.2.3 From 8b850711ceb7c38f9368ce840831c1c0bdb4ba74 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 5 Feb 2019 22:44:47 -0500 Subject: Add log and strict equality --- app/src/web/assets/js/context_a.js | 11 ++++++----- app/src/web/assets/js/context_a.ts | 11 ++++++----- app/src/web/assets/js/textarea_listener.js | 2 +- app/src/web/assets/js/textarea_listener.ts | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) (limited to 'app') diff --git a/app/src/web/assets/js/context_a.js b/app/src/web/assets/js/context_a.js index 0573a17a..d0f5c622 100644 --- a/app/src/web/assets/js/context_a.js +++ b/app/src/web/assets/js/context_a.js @@ -2,11 +2,11 @@ (function () { var longClick = false; var _frostCopyPost = function (e, target) { - if (target.tagName != 'A') { + if (target.tagName !== 'A') { return false; } var parent1 = target.parentElement; - if (!parent1 || parent1.tagName != 'DIV') { + if (!parent1 || parent1.tagName !== 'DIV') { return false; } var parent2 = parent1.parentElement; @@ -15,21 +15,22 @@ } var url = target.getAttribute('href'); var text = parent1.innerText; + console.log("Copy post " + url + " " + text); Frost.contextMenu(url, text); return true; }; var _frostImage = function (e, target) { var element = target; for (var i = 0; i < 2; i++) { - if (element.tagName != 'A') { + if (element.tagName !== 'A') { element = element.parentElement; } } - if (element.tagName != 'A') { + if (element.tagName !== 'A') { return false; } var url = element.getAttribute('href'); - if (!url || url == '#') { + if (!url || url === '#') { return false; } var text = element.parentElement.innerText; diff --git a/app/src/web/assets/js/context_a.ts b/app/src/web/assets/js/context_a.ts index 06d2f4a2..2a079f39 100644 --- a/app/src/web/assets/js/context_a.ts +++ b/app/src/web/assets/js/context_a.ts @@ -15,11 +15,11 @@ * Posts should click a tag, with two parents up being div.story_body_container */ const _frostCopyPost: EventHandler = (e, target) => { - if (target.tagName != 'A') { + if (target.tagName !== 'A') { return false; } const parent1 = target.parentElement; - if (!parent1 || parent1.tagName != 'DIV') { + if (!parent1 || parent1.tagName !== 'DIV') { return false; } const parent2 = parent1.parentElement; @@ -28,6 +28,7 @@ } const url = target.getAttribute('href')!; const text = parent1.innerText; + console.log(`Copy post ${url} ${text}`); Frost.contextMenu(url, text); return true; }; @@ -36,15 +37,15 @@ let element: Element = target; // Notifications are two layers under for (let i = 0; i < 2; i++) { - if (element.tagName != 'A') { + if (element.tagName !== 'A') { element = element.parentElement; } } - if (element.tagName != 'A') { + if (element.tagName !== 'A') { return false } const url = element.getAttribute('href'); - if (!url || url == '#') { + if (!url || url === '#') { return false } const text = (element.parentElement).innerText; diff --git a/app/src/web/assets/js/textarea_listener.js b/app/src/web/assets/js/textarea_listener.js index 02336382..1ec9b663 100644 --- a/app/src/web/assets/js/textarea_listener.js +++ b/app/src/web/assets/js/textarea_listener.js @@ -6,7 +6,7 @@ return; } console.log("FrostJSI focus, " + element.tagName); - if (element.tagName == 'TEXTAREA') { + if (element.tagName === 'TEXTAREA') { Frost.disableSwipeRefresh(true); } }; diff --git a/app/src/web/assets/js/textarea_listener.ts b/app/src/web/assets/js/textarea_listener.ts index 9d5fd388..062f5bf6 100644 --- a/app/src/web/assets/js/textarea_listener.ts +++ b/app/src/web/assets/js/textarea_listener.ts @@ -13,7 +13,7 @@ return } console.log(`FrostJSI focus, ${element.tagName}`); - if (element.tagName == 'TEXTAREA') { + if (element.tagName === 'TEXTAREA') { Frost.disableSwipeRefresh(true); } }; -- cgit v1.2.3 From ddfc310fde5f50ba52ef930287449c2e08faaca8 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 5 Feb 2019 23:02:50 -0500 Subject: Add ability to copy comments, resolves #454 --- .../com/pitchedapps/frost/utils/WebContextMenu.kt | 44 ++++++++++++---------- .../kotlin/com/pitchedapps/frost/web/FrostJSI.kt | 5 +-- app/src/web/assets/js/context_a.js | 13 ++++++- app/src/web/assets/js/context_a.ts | 28 +++++++++----- app/src/web/assets/typings/frost.d.ts | 2 +- docs/Changelog.md | 2 + 6 files changed, 59 insertions(+), 35 deletions(-) (limited to 'app') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/WebContextMenu.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/WebContextMenu.kt index 62330e4d..fbaa4574 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/utils/WebContextMenu.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/WebContextMenu.kt @@ -20,7 +20,6 @@ import android.content.Context import ca.allanwang.kau.utils.copyToClipboard import ca.allanwang.kau.utils.shareText import ca.allanwang.kau.utils.string -import ca.allanwang.kau.utils.toast import com.pitchedapps.frost.R import com.pitchedapps.frost.activities.MainActivity import com.pitchedapps.frost.facebook.formattedFbUrl @@ -29,19 +28,19 @@ import com.pitchedapps.frost.facebook.formattedFbUrl * Created by Allan Wang on 2017-07-07. */ fun Context.showWebContextMenu(wc: WebContext) { - - var title = wc.url + if (wc.isEmpty) return + var title = wc.url ?: string(R.string.menu) title = title.substring(title.indexOf("m/") + 1) //just so if defaults to 0 in case it's not .com/ if (title.length > 100) title = title.substring(0, 100) + '\u2026' + val menuItems = WebContextType.values + .filter { it.constraint(wc) } + materialDialogThemed { title(title) - items(WebContextType.values.map { - if (it == WebContextType.COPY_TEXT && wc.text == null) return@map null - this@showWebContextMenu.string(it.textId) - }.filterNotNull()) + items(menuItems.map { string(it.textId) }) itemsCallback { _, _, position, _ -> - WebContextType[position].onClick(this@showWebContextMenu, wc) + menuItems[position].onClick(this@showWebContextMenu, wc) } dismissListener { //showing the dialog interrupts the touch down event, so we must ensure that the viewpager's swipe is enabled @@ -50,18 +49,23 @@ fun Context.showWebContextMenu(wc: WebContext) { } } -class WebContext(val unformattedUrl: String, val text: String?) { - val url = unformattedUrl.formattedFbUrl +class WebContext(val unformattedUrl: String?, val text: String?) { + val url: String? = unformattedUrl?.formattedFbUrl + inline val hasUrl get() = unformattedUrl != null + inline val hasText get() = text != null + inline val isEmpty get() = !hasUrl && !hasText } -enum class WebContextType(val textId: Int, val onClick: (c: Context, wc: WebContext) -> Unit) { - OPEN_LINK(R.string.open_link, { c, wc -> c.launchWebOverlay(wc.unformattedUrl) }), - COPY_LINK(R.string.copy_link, { c, wc -> c.copyToClipboard(wc.url) }), - COPY_TEXT( - R.string.copy_text, - { c, wc -> if (wc.text != null) c.copyToClipboard(wc.text) else c.toast(R.string.no_text) }), - SHARE_LINK(R.string.share_link, { c, wc -> c.shareText(wc.url) }), - DEBUG_LINK(R.string.debug_link, { c, wc -> +enum class WebContextType( + val textId: Int, + val constraint: (wc: WebContext) -> Boolean, + val onClick: (c: Context, wc: WebContext) -> Unit +) { + OPEN_LINK(R.string.open_link, { it.hasUrl }, { c, wc -> c.launchWebOverlay(wc.unformattedUrl!!) }), + COPY_LINK(R.string.copy_link, { it.hasUrl }, { c, wc -> c.copyToClipboard(wc.url) }), + COPY_TEXT(R.string.copy_text, { it.hasText }, { c, wc -> c.copyToClipboard(wc.text) }), + SHARE_LINK(R.string.share_link, { it.hasUrl }, { c, wc -> c.shareText(wc.url) }), + DEBUG_LINK(R.string.debug_link, { it.hasUrl }, { c, wc -> c.materialDialogThemed { title(R.string.debug_link) content(R.string.debug_link_desc) @@ -69,8 +73,8 @@ enum class WebContextType(val textId: Int, val onClick: (c: Context, wc: WebCont onPositive { _, _ -> c.sendFrostEmail(R.string.debug_link_subject) { message = c.string(R.string.debug_link_content) - addItem("Unformatted url", wc.unformattedUrl) - addItem("Formatted url", wc.url) + addItem("Unformatted url", wc.unformattedUrl!!) + addItem("Formatted url", wc.url!!) } } } diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt index 19d16e87..50a5e2e1 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt @@ -76,10 +76,9 @@ class FrostJSI(val web: FrostWebView) { } @JavascriptInterface - fun contextMenu(url: String, text: String?) { - if (!text.isIndependent) return + fun contextMenu(url: String?, text: String?) { //url will be formatted through webcontext - web.post { context.showWebContextMenu(WebContext(url, text)) } + web.post { context.showWebContextMenu(WebContext(url.takeIf { it.isIndependent }, text)) } } /** diff --git a/app/src/web/assets/js/context_a.js b/app/src/web/assets/js/context_a.js index d0f5c622..410553bd 100644 --- a/app/src/web/assets/js/context_a.js +++ b/app/src/web/assets/js/context_a.js @@ -1,6 +1,15 @@ "use strict"; (function () { var longClick = false; + var _frostCopyComment = function (e, target) { + if (!target.hasAttribute('data-commentid')) { + return false; + } + var text = target.innerText; + console.log("Copy comment " + text); + Frost.contextMenu(null, text); + return true; + }; var _frostCopyPost = function (e, target) { if (target.tagName !== 'A') { return false; @@ -55,12 +64,12 @@ Frost.contextMenu(url, text); return true; }; - var handlers = [_frostCopyPost, _frostImage]; + var handlers = [_frostCopyComment, _frostCopyPost, _frostImage]; var _frostAContext = function (e) { Frost.longClick(true); longClick = true; var target = e.target || e.currentTarget || e.srcElement; - if (!(target instanceof Element)) { + if (!(target instanceof HTMLElement)) { console.log("No element found"); return; } diff --git a/app/src/web/assets/js/context_a.ts b/app/src/web/assets/js/context_a.ts index 2a079f39..4751bbdc 100644 --- a/app/src/web/assets/js/context_a.ts +++ b/app/src/web/assets/js/context_a.ts @@ -9,7 +9,17 @@ /** * Given event and target, return true if handled and false otherwise. */ - type EventHandler = (e: Event, target: Element) => Boolean + type EventHandler = (e: Event, target: HTMLElement) => Boolean + + const _frostCopyComment: EventHandler = (e, target) => { + if (!target.hasAttribute('data-commentid')) { + return false; + } + const text = target.innerText; + console.log(`Copy comment ${text}`); + Frost.contextMenu(null, text); + return true; + }; /** * Posts should click a tag, with two parents up being div.story_body_container @@ -26,7 +36,7 @@ if (!parent2 || !parent2.classList.contains('story_body_container')) { return false; } - const url = target.getAttribute('href')!; + const url = target.getAttribute('href'); const text = parent1.innerText; console.log(`Copy post ${url} ${text}`); Frost.contextMenu(url, text); @@ -42,11 +52,11 @@ } } if (element.tagName !== 'A') { - return false + return false; } const url = element.getAttribute('href'); if (!url || url === '#') { - return false + return false; } const text = (element.parentElement).innerText; // Check if image item exists, first in children and then in parent @@ -58,7 +68,7 @@ const imageUrl = (window.getComputedStyle(image, null).backgroundImage).trim().slice(4, -1); console.log(`Context image: ${imageUrl}`); Frost.loadImage(imageUrl, text); - return true + return true; } // Check if true img exists const img = element.querySelector("img[src*=scontent]"); @@ -66,14 +76,14 @@ const imgUrl = img.src; console.log(`Context img: ${imgUrl}`); Frost.loadImage(imgUrl, text); - return true + return true; } console.log(`Context content ${url} ${text}`); Frost.contextMenu(url, text); - return true + return true; }; - const handlers = [_frostCopyPost, _frostImage]; + const handlers = [_frostCopyComment, _frostCopyPost, _frostImage]; const _frostAContext = (e: Event) => { Frost.longClick(true); @@ -83,7 +93,7 @@ * Commonality; check for valid target */ const target = e.target || e.currentTarget || e.srcElement; - if (!(target instanceof Element)) { + if (!(target instanceof HTMLElement)) { console.log("No element found"); return } diff --git a/app/src/web/assets/typings/frost.d.ts b/app/src/web/assets/typings/frost.d.ts index a3591f66..8f60c9dd 100644 --- a/app/src/web/assets/typings/frost.d.ts +++ b/app/src/web/assets/typings/frost.d.ts @@ -5,7 +5,7 @@ declare interface FrostJSI { reloadBaseUrl(animate: boolean) - contextMenu(url: string, text: string | null) + contextMenu(url: string | null, text: string | null) longClick(start: boolean) diff --git a/docs/Changelog.md b/docs/Changelog.md index abf15cd9..09345c5e 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -2,6 +2,8 @@ ## v2.2.2 * New marketplace shortcut +* Fix crash when internet disconnects (may still need app restart) +* Improve JS code ## v2.2.1 * Update theme -- cgit v1.2.3